#!/usr/bin/env/perl #use strict; #use warnings; my $InSam = $ARGV[0]; my $SampleID = $ARGV[1]; chomp $InSam; chomp $SampleID; open(DATA, "$InSam") || die "Can't open $InSam: $!\n"; open my $OFILE, '>', $SampleID.'.cluster_ChrPos.txt' or die "Cannot create file for output: $!"; use strict; my %seen=(); my @flds; my $UMI; my @cluster_ChrPos; while () { chomp; @flds=split /\t/; my $POS; if ($seen{$flds[0]}++) { $UMI=$flds[2]; my @subpats; for my $i (0..length($UMI)-1) { for my $j ($i+1..length($UMI)-1) { my $subpat = join('', substr($UMI, 0, $i), '.', # or '\\w' substr($UMI, $i+1, $j-$i-1), '.', # or '\\w' substr($UMI, $j+1), ); push @subpats, $subpat; } } my $pat = join('|', @subpats); if($flds[0] =~ m/"$pat"/) { #print "$pat\t$flds[0]"; push (@cluster_ChrPos, "$_"); push (@cluster_ChrPos, "\n"); } else { #push (@cluster_ChrPos, "DELIMIT\n"); push (@cluster_ChrPos, "$_"); push (@cluster_ChrPos, "\n"); } } else { push (@cluster_ChrPos, "DELIMIT\n"); push (@cluster_ChrPos, "$_"); push (@cluster_ChrPos, "\n"); } } push (@cluster_ChrPos, "DELIMIT"); print $OFILE "@cluster_ChrPos\n"; print "@cluster_ChrPos\n"; close $OFILE; close DATA;