annotate 2.4/src/SoftSearch.multi.pl @ 18:1163c16cb3c0 draft

Uploaded
author plus91-technologies-pvt-ltd
date Mon, 02 Jun 2014 07:35:53 -0400
parents 8eb7d93f7e58
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1 #!/usr/bin/perl
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
2
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
3 ####
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
4 #### Usage: SoftSearch.pl [-lqrmsd] -b <BAM> -f <Genome.fa> -sam <samtools path> -bed <bedtools path>
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
5 #### Created 1-30-2012 by Steven Hart, PhD
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
6 #### hart.steven@mayo.edu
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
7 #### Required bedtools & samtools to be in path
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
8
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
9 #use FindBin;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
10 #use lib "$FindBin::Bin/lib";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
11 use lib "/home/plus91/shed_tools/toolshed.g2.bx.psu.edu/repos/plus91-technologies-pvt-ltd/softsearch/e3609c8714fb/softsearch/2.4/lib" ;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
12 use Getopt::Long;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
13 use strict;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
14 use warnings;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
15 use Data::Dumper;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
16 use LevD;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
17 use File::Basename;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
18 use List::Util qw(min max);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
19
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
20 my (@INPUT_BAM,$INPUT_FASTA,$OUTPUT_FILE,$minSoft,$minSoftReads,$dist_To_Soft,$bedtools,$samtools);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
21 my ($minRP, $temp_output, $num_sd, $MapQ, $chrom, $unmated_pairs, $minBQ, $pair_only, $disable_RP_only);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
22 my ($levD_local_threshold, $levD_distl_threshold,$pe_upper_limit,$high_qual,$sv_only,$blacklist,$genome_file,$verbose);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
23
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
24 my $cmd = "";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
25
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
26 #Declare variables
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
27 GetOptions(
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
28 'b=s{1,}' => \@INPUT_BAM,
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
29 'f=s' => \$INPUT_FASTA,
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
30 'o:s' => \$OUTPUT_FILE,
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
31 'm:i' => \$minRP,
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
32 'l:i' => \$minSoft,
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
33 'r:i' => \$minSoftReads,
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
34 't:i' => \$temp_output,
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
35 's:s' => \$num_sd,
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
36 'd:i' => \$dist_To_Soft,
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
37 'q:i' => \$MapQ,
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
38 'c:s' => \$chrom,
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
39 'u:s' => \$unmated_pairs,
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
40 'x:s' => \$minBQ,
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
41 'p' => \$pair_only,
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
42 'g' => \$disable_RP_only, #ignore softclips
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
43 'j:s' => \$levD_local_threshold,
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
44 'k:s' => \$levD_distl_threshold,
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
45 'a:s' => \$pe_upper_limit,
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
46 'e:s' => \$high_qual,
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
47 'L' => \$sv_only,
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
48 'v' => \$verbose,
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
49 'blacklist:s' => \$blacklist,
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
50 'genome_file:s' => \$genome_file,
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
51 "help|h|?" => \&usage);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
52 #print "Using @INPUT_BAM as INPUT_BAM\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
53 unless($sv_only){$sv_only=""};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
54 my $INPUT_BAM=$INPUT_BAM[0];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
55 #print "MY NEW INPUT BAM=$INPUT_BAM[0]\n\n";die;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
56 if(defined($INPUT_BAM)){$INPUT_BAM=$INPUT_BAM} else {print usage();die "Where is the BAM file?\n\n"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
57 if(defined($INPUT_FASTA)){$INPUT_FASTA=$INPUT_FASTA} else {print usage();die "Where is the fasta file?\n\n"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
58 my ($fn,$pathname) = fileparse($INPUT_BAM,".bam");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
59 #my $index=`ls $pathname/$fn*bai|head -1`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
60 #my $index =`ls \${INPUT_BAM%.bam}*bai`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
61 #print "INDEX=$index\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
62 #if(!$index){die "\n\nERROR: you need index your BAM file\n\n"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
63 my $index="";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
64 ### get current time
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
65 print "Start Time : " . &spGetCurDateTime() . "\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
66 my $now = time;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
67
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
68 #if(defined($OUTPUT_FILE)){$OUTPUT_FILE=$OUTPUT_FILE} else {$OUTPUT_FILE="output.vcf"; print "\nNo outfile specified. Using output.vcf as default\n\n"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
69 if(defined($minSoft)){$minSoft=$minSoft} else {$minSoft=5}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
70 if(defined($minRP)){$minRP=$minRP} else {$minRP=5}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
71 if(defined($minSoftReads)){$minSoftReads=$minSoftReads} else {$minSoftReads=5}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
72 if(defined($dist_To_Soft)){$dist_To_Soft=$dist_To_Soft} else {$dist_To_Soft=300}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
73 if(defined($num_sd)){$num_sd=$num_sd} else {$num_sd=6}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
74 if(defined($MapQ)){$MapQ=$MapQ} else {$MapQ=20}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
75
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
76 unless (defined $pe_upper_limit) { $pe_upper_limit = 10000; }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
77 unless (defined $levD_local_threshold) { $levD_local_threshold = 0.05; }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
78 unless (defined $levD_distl_threshold) { $levD_distl_threshold = 0.05; }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
79 #Get sample name if available
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
80 my $SAMPLE_NAME="";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
81 my $OUTNAME ="";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
82 $SAMPLE_NAME=`samtools view -f2 -H $INPUT_BAM|awk '{if(\$1~/^\@RG/){sub("ID:","",\$2);name=\$2;print name}}'|head -1`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
83 $SAMPLE_NAME=~s/\n//g;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
84 if (!$OUTPUT_FILE){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
85 if($SAMPLE_NAME ne ""){$OUTNAME=$SAMPLE_NAME.".vcf"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
86 else {$OUTNAME="output.vcf"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
87 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
88 else{$OUTNAME=$OUTPUT_FILE}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
89
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
90 print "Writing results to $OUTNAME\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
91
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
92
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
93 ##Make sure if submitting on SGE, to prepned the "chr". Not all referecne FAST files require "chr", so we shouldn't force the issue.
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
94 if(!defined($chrom)){$chrom=""}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
95 if(!defined($unmated_pairs)){$unmated_pairs=0}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
96
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
97 my $badQualValue=chr($MapQ);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
98 if(defined($minBQ)){ $badQualValue=chr($minBQ); }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
99
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
100 if($badQualValue eq "#"){$badQualValue="\#"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
101
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
102 # adding and cheking for samtools and bedtools in the PATh
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
103 ## check for bedtools and samtools in the path
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
104 $bedtools=`which intersectBed` ;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
105 if(!defined($bedtools)){die "\nError:\n\tno bedtools. Please install bedtools and add to the path\n";}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
106 #$samtools=`samtools 2>&1`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
107 $samtools=`which samtools`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
108 if($samtools !~ /(samtools)/i){die "\nError:\n\tno samtools. Please install samtools and add to the path\n";}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
109
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
110 print "Usage = SoftSearch.pl -l $minSoft -q $MapQ -r $minSoftReads -d $dist_To_Soft -m $minRP -s $num_sd -c $chrom -b @INPUT_BAM -f $INPUT_FASTA -o $OUTNAME \n\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
111 sub usage {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
112 print "\nusage: SoftSearch.pl [-cqlrmsd] -b <BAM> -f <Genome.fa> \n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
113 print "\t-q\t\tMinimum mapping quality [20]\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
114 print "\t-l\t\tMinimum length of soft-clipped segment [5]\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
115 print "\t-r\t\tMinimum depth of soft-clipped reads at position [5]\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
116 print "\t-m\t\tMinimum number of discordant read pairs [5]\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
117 print "\t-s\t\tNumber of sd away from mean to be considered discordant [6]\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
118 print "\t-u\t\tNumber of unmated pairs [0]\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
119 print "\t-d\t\tMax distance between soft-clipped segments and discordant read pairs [300]\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
120 print "\t-o\t\tOutput file name [output.vcf]\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
121 print "\t-t\t\tPrint temp files for debugging [no|yes]\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
122 print "\t-c\t\tuse only this chrom or chr:pos1-pos2\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
123 print "\t-p\t\tuse paired-end mode only \n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
124 print "\t-g\t\tEnable paired-only seach. This will look for discordant read pairs even without soft clips.\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
125 print "\t-a\t\tset the minimum distance for a discordant read pair without soft-clipping info [10000]\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
126 print "\t-L\t\tFlag to print out even small deletions (low quality)\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
127 print "\t-e\t\tdisable strict quality filtering of base qualities in soft-clipped reads [no]\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
128 print "\t-blacklist\tareas of the genome to skip calling. Requires -genome_file\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
129 print "\t-genome_file\ttab seperated value of chromosome name and length. Only used with -blacklist option\n\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
130
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
131 exit 1;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
132 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
133
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
134
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
135 #############################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
136 # create temporary variable name
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
137 #############################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
138 srand (time ^ $$ ^ unpack "%L*", `ps axww | gzip -f`);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
139 our $random_name=join "", map { ("a".."z")[rand 26] } 1..8;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
140
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
141 #############################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
142 ## create green list
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
143 ##############################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
144 #
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
145 my $new_blacklist="";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
146 if($blacklist){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
147 if(!$genome_file){die "if using a blacklist, you must also specify the location of a genome_file
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
148 The format of the genome_file should be
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
149 chrom size
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
150 chr1 249250621
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
151 chr2 243199373
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
152 ...
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
153
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
154 If using hg19, you can ge the genome file by
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
155 mysql --user=genome --host=genome-mysql.cse.ucsc.edu -A -e \"select chrom, size from hg19.chromInfo\" > hg19.genome";}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
156
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
157 $cmd=join("","complementBed -i $blacklist -g $genome_file >",$random_name,".bed") ;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
158 system ($cmd);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
159 $new_blacklist=join(""," -L ",$random_name,".bed ");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
160 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
161
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
162 if($verbose){print "CMD=$cmd\nBlacklist is $new_blacklist\n";}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
163
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
164
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
165
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
166
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
167
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
168 #############################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
169 # Calcualte insert size distribution of properly mated reads
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
170 #############################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
171
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
172 #Change for compatability with other operating systems
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
173 #my $metrics=`samtools view -q $MapQ -f2 $INPUT_BAM $chrom|cut -f9|head -10000|awk '{if (\$1<0){\$1=-\$1}else{\$1=\$1} sum+=\$1; sumsq+=\$1*\$1} END {print sum/NR, sqrt(sumsq/NR - (sum/NR)**2)}'`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
174 #print "samtools view -q $MapQ -f2 $INPUT_BAM $chrom|cut -f9|head -10000|awk '{if (\$1<0){\$1=-\$1}else{\$1=\$1} sum+=\$1; sumsq+=\$1*\$1} END {print sum/NR, sqrt(sumsq/NR - (sum/NR)^2)}'\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
175 my $metrics=`samtools view -q $MapQ -f2 $INPUT_BAM $chrom|cut -f9|head -10000|awk '{if (\$1<0){\$1=-\$1}else{\$1=\$1} sum+=\$1; sumsq+=\$1*\$1} END {print sum/NR, sqrt(sumsq/NR - (sum/NR)^2)}'`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
176 #my ($mean,$stdev)=split(/ /,$metrics);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
177 my ($mean,$stdev)=split(/\s/,$metrics);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
178 $stdev=~s/\n//;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
179
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
180 #print "MEAN=$mean\tSTDEV=$stdev\n\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
181
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
182 my $upper_limit=int($mean+($num_sd*$stdev));
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
183 my $lower_limit=int($mean-($num_sd*$stdev));
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
184 die if (!$mean);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
185 print qq{The mean insert size is $mean +/- $stdev (sd)
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
186 The upper limit = $upper_limit
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
187 The lower limit = $lower_limit\n
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
188 };
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
189 if($lower_limit<0){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
190 print "Warning!! Given this insert size distribution, we can not call small indels. No other data will be affected\n\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
191 $lower_limit=1;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
192 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
193 my $tmp_name=join ("",$random_name,".tmp.bam");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
194 my $random_file_sc = "";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
195 my $command = "";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
196
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
197 #############################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
198 # Make sam file that has soft clipped reads
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
199 #############################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
200 #give file a name
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
201 if(!defined($pair_only)){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
202 foreach my $bam(@INPUT_BAM){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
203 $random_file_sc=join ("",$random_name,".sc.sam");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
204 $command=join ("","samtools view -q $MapQ -F 1024 $bam $chrom $new_blacklist| awk '{OFS=\"\\t\"}{c=0;if(\$6~/S/){++c};if(c == 1){print}}' | perl -ane '\$TR=(\@F[10]=~tr/\#//);if(\$TR<2){print}' >> ", $random_file_sc);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
205 print "Making SAM file of soft-clipped reads from $bam\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
206 if($verbose){ print "$command\n";}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
207 system("$command");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
208 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
209 #############################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
210 # Find areas that have deep enough soft-clip coverage
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
211 print "Identifying soft-clipped regions that are at least $minSoft bp long iin $random_file_sc\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
212 open (FILE,"$random_file_sc")||die "Can't open soft-clipped sam file $random_file_sc\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
213
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
214 my $tmpfile=join("",$random_file_sc,".sc.passfilter");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
215 open (OUT,">$tmpfile")||die "Can't write files here!\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
216
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
217 while(<FILE>){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
218 @_ = split(/\t/, $_);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
219 #### parse CIGAR string and create a hash of array of each operation
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
220 my @CIGAR = split(/([0-9]+[SMIDNHXP])/, $_[5]);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
221 my $hash;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
222 map { push(@{$hash->{$2}}, $1) if (/(\d+)([SMIDNHXP])/) } @CIGAR;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
223
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
224 #for ($i=0; $i<=$#softclip_pos; $i++) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
225 foreach my $softclip (@{$hash->{S}}) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
226 #if ($CIGAR[$softclip_pos[$i]] > $minSoft){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
227 if ($softclip > $minSoft){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
228 ###############Make sure base qualities don't have more than 2 bad marks
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
229 my $qual=$_[10];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
230 my $TR=($qual=~tr/$badQualValue//);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
231 if($badQualValue eq "#"){ $TR=($qual=~tr/\#//); }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
232 #Skip the soft clip if there is more than 2 bad qual values
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
233 #next if($TR > 2);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
234 # if (!$high_qual){next if($TR > 2);}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
235 print OUT;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
236 last;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
237 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
238 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
239 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
240 close FILE;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
241 close OUT;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
242
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
243 $command=join(" ","mv",$tmpfile,$random_file_sc);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
244 if($verbose){ print "$command\n";}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
245 system("$command");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
246 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
247
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
248 #########################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
249 #Stack up SoftClips
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
250 #########################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
251 my $random_file=join("",$random_name,".sc.direction.bed");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
252 if(!defined($pair_only)){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
253 open (FILE,"$random_file_sc")|| die "Can't open sam file\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
254 #$random_file=join("",$random_name,".sc.direction");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
255
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
256 print "Calling sides of soft-clips from $random_file_sc\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
257 #\nTMPOUT=$random_file\tINPUT=$random_file_sc\n\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
258 open (TMPOUT,">$random_file")|| die "Can't create tmp file\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
259
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
260 while (<FILE>){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
261 @_ = split(/\t/, $_);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
262 #### parse CIGAR string and create a hash of array of each operation
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
263 my @CIGAR = split(/([0-9]+[SMIDNHXP])/, $_[5]);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
264 my $hash;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
265 map { push(@{$hash->{$2}}, $1) if (/(\d+)([SMIDNHXP])/) } @CIGAR;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
266
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
267 #### next if softclips on each end
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
268 next if ($_[5] =~ /^[0-9]+S.*S$/);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
269
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
270 #### next softclip occurs in the middle
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
271 next if ($_[5] =~ /^[0-9]+[^S][0-9].*S.+$/);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
272
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
273 my $softclip = $hash->{S}[0];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
274
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
275 my $end1 = 0;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
276 my $end2 = 0;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
277 my $softBases = "";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
278 my $right_corrected="";my $left_corrected="";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
279
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
280 if ($softclip > $minSoft) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
281
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
282 ####If the soft clip occurs at end of read and its on the minus strand, then it's a right clip
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
283 if ($_[5] =~ /^.*S$/) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
284 $end1=$_[3]+length($_[9])-$softclip-1;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
285 $end2=$end1+1;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
286 next if ($end1<0);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
287 #RIGHT clip on Minus
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
288 $softBases=substr($_[9], length($_[9])-$softclip, length($_[9]));
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
289 #Right clips don't always get clipped correctly, so fix that
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
290 # Check to see if sc base matches ref
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
291 $right_corrected=baseCheck($_[2],$end2,"right",$softBases);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
292 print TMPOUT "$right_corrected\n"
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
293
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
294 } else {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
295 #### Begins with S (left clip)
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
296 $end1=$_[3]-$softclip;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
297 next if ($end1<0);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
298
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
299 $softBases=substr($_[9], 0,$softclip);#print "TMP=$softBases\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
300 $left_corrected=baseCheck($_[2],$end1,"left",$softBases);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
301 if(!$left_corrected){print "baseCheck($_[2],$end1,left,$softBases)\n";next}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
302 print TMPOUT "$left_corrected\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
303 #print "\nSEQ=$_[9]\t\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
304
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
305 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
306 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
307 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
308 close FILE;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
309 close TMPOUT;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
310 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
311 sub baseCheck{
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
312 my ($chrom,$pos,$direction,$softBases)=@_;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
313 #skip if position is less than 0, which is caused by MT DNA
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
314 return if ($pos<0);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
315 my $exit="";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
316
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
317 while(!$exit){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
318 if($direction=~/right/){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
319 my $refBase=getSeq($chrom,$pos,$INPUT_FASTA);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
320 my $softBase=substr($softBases,0,1);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
321 if ($softBase !~ /$refBase/){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
322 my $value=join("\t",$chrom,$pos,$pos+1,join("|",$softBases,$direction));
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
323 $exit="STOP";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
324 return $value;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
325 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
326 else{
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
327 $pos=$pos+1;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
328 $softBases=substr($softBases, 1,length($softBases));
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
329 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
330 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
331 else{
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
332 my $refBase=getSeq($chrom,$pos+1,$INPUT_FASTA);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
333 my $softBase=substr($softBases,-1,1);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
334 if ($softBase !~ /$refBase/){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
335 $pos=$pos-1+length($softBases);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
336 my $value=join("\t",$chrom,$pos-1,$pos,join("|",$softBases,$direction));
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
337 $exit="STOP";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
338 return $value;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
339 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
340 else{
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
341 $pos=$pos-1;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
342 $softBases=substr($softBases, 0, -1);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
343 #print "Trying again $softBases\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
344 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
345
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
346 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
347
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
348 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
349 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
350 #Remove SAM files to conserve space
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
351 unlink($random_file_sc);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
352
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
353
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
354
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
355 ###
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
356 #
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
357 ######################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
358 # Transform Read pair groups into softclip equivalents
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
359 ######################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
360 #
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
361 #
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
362 #
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
363 my $v="";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
364 #if($disable_RP_only){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
365 print "Running Bam2pair.pl\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
366 print "Looking for discordant read pairs without requiring soft-clipping information\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
367 use FindBin qw($Bin);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
368 my $path=$Bin;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
369 # print"\n\nPATH=$path\n\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
370 if($verbose){$v="-v"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
371 foreach my $random_file_disc(@INPUT_BAM){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
372 my $tmp_out=join("",$random_name,"RP.out");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
373 $command=join("","perl ",$path,"/Bam2pair.pl -b $random_file_disc -o $tmp_out -isize $pe_upper_limit -winsize $dist_To_Soft -min $minRP -chrom $chrom -prefix $random_name -q $MapQ -blacklist $random_name.bed $v");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
374 if($verbose){ print "$command\n"};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
375 system("$command");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
376 $command=join("","perl -ane '\$end1=\@F[1];\$end2=\@F[3];print join(\"\\t\",\@F[0..1],\$end1,\"unknown|left\");print \"\\n\";print join(\"\\t\",\@F[2..3],\$end2,\"unknown|left\");print \"\\n\"' ", $tmp_out," >> ",$random_file);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
377 if($verbose){print "$command\n"};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
378 system($command);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
379 unlink($tmp_out);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
380 #}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
381 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
382
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
383
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
384 ######################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
385 unlink("$random_file","$tmp_name","$random_file","$index","$random_name","$new_blacklist") if (-z $random_file || ! -e $random_file) ;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
386 if (-z $random_file || ! -e $random_file){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
387 print "Softclipped file is empty($random_file).\nNo soft clipping found using desired paramters\n\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
388 open (OUT,">$OUTNAME")||die "Can't write files here!\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
389 &print_header();
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
390 close OUT;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
391 exit;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
392 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
393
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
394
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
395 #############################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
396 # Make sure there are enough soft-clippped supporting reads
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
397 #############################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
398 my $outfile=join("",$random_file,".sc.merge.bed");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
399 #sortbed -i .sc.direction | mergeBed -nms -d 25 -i stdin > .sc.merge.bed
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
400 $command=join(" ","sortBed -i",$random_file," | mergeBed -nms -i stdin","|grep \";\"","|awk '{OFS=\"\t\"}(NF==4)'",">",$outfile);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
401
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
402 #print "$command\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
403 system("$command");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
404
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
405 if (-z $outfile || ! -e $outfile){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
406 unlink("$tmp_name","$random_file","$outfile","$index","$random_name","$new_blacklist");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
407 print "mergeBed file is empty.\nNo strucutral variants found\n\n" ;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
408 open (OUT,">$OUTNAME")||die "Can't write files here!\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
409 &print_header();
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
410 close OUT;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
411 exit;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
412 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
413
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
414 print "completed mergeBed\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
415
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
416 ###############################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
417 # If left and right are on the same line, make into 2 lines
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
418 ###############################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
419 open (INFILE,$outfile)||die "couldn't open temp file : $. \n\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
420 my $tmp2=join("",$random_name,".sc.fixed.merge.bed");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
421 #print "INFILE=$outfile\tOUTFILE=$tmp2\n\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
422 #INPUT FORMAT=chr9\t131467\t131473\tATGCTTATTAAAA|left;TTATTAAAAGCATA|left
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
423 open (OUTFILE,">$tmp2")||die "couldn't create temp file : $. \n\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
424 while(<INFILE>){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
425 chomp $_;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
426 my $l = $_;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
427
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
428 my @a = split(/\t/, $l);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
429 my $info = $a[3];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
430 my @info_arr = split(/\;/, $info);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
431 my @left_arr=();
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
432 my @right_arr=();
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
433 @left_arr = grep(/left/, @info_arr);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
434 @right_arr = grep(/right/, @info_arr);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
435
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
436 #New
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
437 my $left = join(";", @left_arr);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
438 my $right = join(";", @right_arr);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
439 $info = join(";", @info_arr);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
440
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
441 if((@left_arr) && (@right_arr)){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
442 print OUTFILE "$a[0]\t$a[1]\t$a[2]\t$left\n$a[0]\t$a[1]\t$a[2]\t$right\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
443 } else{
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
444 my $all=join("\t",@a[0..2],$info);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
445 print OUTFILE "$all\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
446 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
447 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
448
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
449 # make sure output file name is $outfile
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
450 $command=join(" ","sed -e '/ /s//\t/g'", $tmp2,"|awk 'BEGIN{OFS=\"\\t\"}(NF==4)'", "|perl -pne 's/ /\t/g'>",$outfile);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
451 system("$command");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
452 if($verbose){print "$command\n"};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
453 unlink("$tmp_name","$random_file","$tmp2","$outfile","$index","random_name","$new_blacklist") if (-z $outfile || ! -e $outfile) ;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
454 if (-z $outfile || ! -e $outfile){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
455 print "Fixed mergeBed file is empty($outfile).\nNo strucutral variants found\n\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
456 open (OUT,">$OUTNAME")||die "Can't write files here!\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
457 &print_header();
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
458 close OUT;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
459 exit;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
460 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
461
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
462 print "completed fixing mergeBed\n\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
463
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
464 ###############################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
465 # Seperate directions of soft clips
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
466 ###############################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
467 my $left_sc = join("", "left", $tmp2);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
468 my $right_sc = join("", "right", $tmp2);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
469 use FindBin qw($Bin);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
470 #my $path=$Bin;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
471
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
472 $command=join("","grep left ", $tmp2, " |sed -e '/left /s//left\;/g' | sed -e '/ /s//\t/g'|perl ".$path."/direction_filter.pl - >",$left_sc);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
473 system("$command");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
474 #print "$command\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
475 $command=join("","grep right ", $tmp2, " |sed -e '/right /s//right\;/g' | sed -e '/ /s//\t/g'|perl ".$path."/direction_filter.pl - >",$right_sc);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
476 #$command=join(" ","grep right ", $tmp2, " |sed -e '/right /s//right\;/g' | sed -e '/ /s//\t/g' >",$right_sc);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
477 system("$command");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
478 #print "$command\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
479 #die "CHECK $right_sc\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
480
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
481 ###############################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
482 # Count the number and identify directions of soft clips
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
483 ###############################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
484 print "Count the number and identify directions of soft clips\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
485 #print "looking in $outfile\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
486 $outfile=join("",$random_name,".sc.fixed.merge.bed");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
487 #system("ls -lhrt");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
488 open (INFILE,$outfile)||die "couldn't open temp file\n\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
489 my $tmp3 = join("", $random_file, "predSV");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
490 open (OUTFILE, ">$tmp3")||die "couldn't create temp file\n\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
491 while(<INFILE>){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
492 chomp;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
493 @_=split(/\t/,$_);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
494 my $count=tr/\;//;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
495 $count=$count+1;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
496 my $left=0;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
497 my $right=0;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
498
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
499 while ($_ =~ /left/g) { $left++ } # count number of right clips
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
500 while ($_ =~ /right/g) { $right++ } # count number of left clips
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
501
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
502 ###############################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
503 if ($count >= $minSoftReads){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
504 ####get longets soft-clipped read
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
505 my @clips=split(/\;|\|/,$_[3]);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
506
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
507 my ($max, $temp, $temp2, $temp3, $dir, $maxSclip) = (0) x 6;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
508 for (my $i=0; $i<$count; $i++) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
509 my $plus1=$i+1;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
510 $temp=length($clips[$i]);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
511 $temp2=$clips[$plus1];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
512 $temp3=$clips[$i];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
513
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
514 if ($temp > $max){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
515 $maxSclip=$temp3;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
516 $max =$temp;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
517 $dir=$temp2;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
518 } else {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
519 $max=$max;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
520 $dir=$dir;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
521 $maxSclip=$maxSclip;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
522 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
523 $i++;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
524 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
525 my $order2 = join("|", $left, $right);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
526 #print join ("\t",@_[0..2],$maxSclip,$max,$dir,$count,$order2) . "\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
527 print OUTFILE join ("\t",@_[0..2],$maxSclip,$max,$dir,$count,$order2) . "\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
528 } elsif($_=~/unknown/){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
529 print OUTFILE join ("\t",@_[0..2],"NA","NA","left","NA","NA|NA") . "\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
530 print OUTFILE join ("\t",@_[0..2],"NA","NA","right","NA","NA|NA") . "\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
531 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
532 ####Format is Chrom,start, end,longest Soft-clip,length of longest Soft-clip, direction of longest soft-clip,#supporting softclips,#right Sclips|#left Sclips
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
533 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
534 close INFILE;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
535 close OUTFILE;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
536
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
537 unlink("$tmp2","$tmp_name","$random_file","$tmp3","$outfile","$index","$random_name","$right_sc","$left_sc","$new_blacklist") if (-z $tmp3 || !-e $tmp3) ;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
538
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
539 if (-z $tmp3 || !-e $tmp3){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
540 print "No structural variants found while Counting the number and identify directions of soft clips.\n" ;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
541
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
542 # open (OUT,">$OUTNAME")||die "Can't write files here!\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
543 # &print_header();
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
544 # close OUT;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
545 exit;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
546 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
547
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
548 print "Done counting Softclipped reads\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
549 ###############################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
550 #### Print header information
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
551 ###############################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
552
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
553
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
554 foreach my $random_file_disc(@INPUT_BAM){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
555 print "Making the header for $random_file_disc\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
556 $SAMPLE_NAME=`samtools view -f2 -H $random_file_disc|awk '{if(\$1~/^\@RG/){sub("ID:","",\$2);name=\$2;print name}}'|head -1`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
557 $SAMPLE_NAME=~s/\n//g;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
558 if($chrom){$SAMPLE_NAME.=".".$chrom}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
559
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
560 $SAMPLE_NAME.=".vcf";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
561 open (OUT,">$SAMPLE_NAME")||die "Can't write files here!\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
562 &print_header();
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
563
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
564 # DO the bulk of the work
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
565 open (FILE,"$tmp3")|| die "Can't open file\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
566
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
567 while (<FILE>){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
568 #If left clip {+- or -- or -+ }{+- are uninformative b/c they go upstream}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
569 #If right clip {++ or -- or +-}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
570 chomp $_;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
571 my @res=();my $res;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
572 my $line = $_;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
573 my @info = split(/\t/, $_);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
574 my $i=0;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
575 my $basename=basename($random_file_disc);$i=0;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
576 if($info[5] eq "left") {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
577 $res=bulk_work("left", $line, $random_file_disc);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
578 if(!$res){$res=join("\t",".",".",".",".",".",".",".",".",".",".")};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
579 $i++;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
580 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
581 elsif ($info[5] eq "right") {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
582 $res=bulk_work("right", $line, $random_file_disc);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
583 if(!$res){$res=join("\t",".",".",".",".",".",".",".",".",".",".")};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
584 $i++;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
585 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
586 if($res){@res=split("\t",$res);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
587 print OUT join("\t",@res)."\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
588 }}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
589 close FILE;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
590 close OUT;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
591 print "Done with $random_file_disc\n\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
592 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
593
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
594
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
595
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
596 ###############################################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
597 ###############################################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
598 #### Delete temp files
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
599 my $meregedBed=join("",$random_name,".sc.direction.bed.sc.merge.bed");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
600
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
601 if(defined($temp_output)){$temp_output=$temp_output} else {$temp_output="no"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
602
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
603 if ($temp_output eq "no"){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
604 unlink("$tmp_name","$random_file","$tmp2",,"$tmp3","$outfile","$index","$random_name","$right_sc","$left_sc","$meregedBed","$random_name.bed");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
605 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
606 ####Sort VCF
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
607 #my $tmp=join(".",$random_name,"tmp");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
608 #Get header
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
609 #$cmd="grep \"#\" $OUTNAME > $tmp";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
610 #system($cmd);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
611 #sort results
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
612 #$cmd="grep -v \"#\" $OUTNAME|perl -pne 's/chr//'|sort -k1,1n -k2,2n|perl -ne 'print \"chr\".\$_' >>$tmp";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
613 #system($cmd);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
614 #$cmd="mv $tmp $OUTNAME";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
615 #system($cmd);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
616 #remove entries next to each other
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
617
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
618
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
619 print "Analysis Completed\n\nYou did it!!!\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
620 print "Finish Time : " . &spGetCurDateTime() . "\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
621 $now = time - $now;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
622 printf("\n\nTotal running time: %02d:%02d:%02d\n\n", int($now / 3600), int(($now % 3600) / 60),
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
623 int($now % 60));
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
624
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
625 exit;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
626
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
627 ###############################################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
628 sub rev_comp {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
629 my $dna = shift;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
630 my $revcomp = reverse($dna);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
631 $revcomp =~ tr/ACGTacgt/TGCAtgca/;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
632 return $revcomp;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
633 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
634
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
635
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
636 ###############################################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
637 #### to get reference base
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
638 sub getSeq{
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
639 my ($chr,$pos,$fasta)=@_;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
640 #don't require chr
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
641 #if($chr !~ /^chr/){die "$chr is not correct\n";}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
642 # die "$pos is not a number\n" if ($pos <0);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
643 my @result=();
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
644 if ($pos <0){print "$pos is not a valid position (likely caused by circular MT chromosome)\n";return;}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
645
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
646 @result = `samtools faidx $fasta $chr:$pos-$pos`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
647 if($result[1]){chomp($result[1]);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
648 return uc($result[1]);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
649 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
650 return("NA");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
651 #### after return will not be printed
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
652 ####print "RESULTS=@result\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
653 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
654
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
655 sub getBases{
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
656 my ($chr,$pos1,$pos2,$fasta)=@_;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
657 #don't require chr
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
658 #if($chr !~ /^chr/){die "$chr is not correct\n";}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
659 my @result=();
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
660 if ($pos1 <0){print "$pos1 is not a valid position (likely caused by circular MT chromosome)\n";return;};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
661
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
662 @result = `samtools faidx $fasta $chr:$pos1-$pos2`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
663 if(!$result[1]){$result[1]="NA"};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
664 chomp($result[1]);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
665 return uc($result[1]);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
666
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
667 #### after return will not be printed
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
668 ####print "RESULTS=@result\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
669 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
670 ###############################################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
671 #### to get time
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
672 sub spGetCurDateTime {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
673 my ($sec, $min, $hour, $mday, $mon, $year) = localtime();
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
674 my $curDateTime = sprintf "%4d-%02d-%02d %02d:%02d:%02d",
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
675 $year+1900, $mon+1, $mday, $hour, $min, $sec;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
676 return ($curDateTime);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
677 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
678
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
679
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
680 ###############################################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
681 #### print header
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
682 sub print_header {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
683 my $date=&spGetCurDateTime();
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
684 my $header = qq{##fileformat=VCFv4.1
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
685 ##fileDate=$date
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
686 ##source=SoftSearch.pl
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
687 ##reference=$INPUT_FASTA
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
688 ##Usage= SoftSearch.pl -l $minSoft -q $MapQ -r $minSoftReads -d $dist_To_Soft -m $minRP -u $unmated_pairs -s $num_sd -b @INPUT_BAM -f $INPUT_FASTA -o $OUTNAME
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
689 ##INFO=<ID=SVTYPE,Number=1,Type=String,Description="Type of structural variant">
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
690 ##INFO=<ID=EVENT,Number=1,Type=String,Description="ID of event associated to breakend">
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
691 ##FORMAT=<ID=lSC,Number=1,Type=Integer,Description="Length of the longest soft clips supporting the BND">
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
692 ##FORMAT=<ID=nSC,Number=1,Type=Integer,Description="Number of supporting soft-clips\">
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
693 ##FORMAT=<ID=uRP,Number=1,Type=Integer,Description="Number of unmated read pairs nearby Soft-Clips">
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
694 ##FORMAT=<ID=levD_local,Number=1,Type=Float,Description="Levenstein distance between soft-clipped bases and the area around the original soft-clipped site">
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
695 ##FORMAT=<ID=levD_distl,Number=1,Type=Float,Description="Levenstein distance between the soft-clipped bases and mate location">
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
696 ##FORMAT=<ID=CTX,Number=1,Type=Integer,Description="Number of chromosomal translocations">
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
697 ##FORMAT=<ID=DEL,Number=1,Type=Integer,Description="Number of reads supporting Large Deletions">
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
698 ##FORMAT=<ID=INS,Number=1,Type=Integer,Description="Number of reads supporting Large insertions">
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
699 ##FORMAT=<ID=NOV_INS,Number=1,Type=Integer,Description="Number of reads supporting novel sequence insertion">
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
700 ##FORMAT=<ID=INV,Number=1,Type=Integer,Description="Number of reads supporting inversions">
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
701 ##FORMAT=<ID=sDEL,Number=1,Type=Integer,Description="Number of reads supporting novel sequence insertion">
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
702 ##INFO=<ID=NO_MATE_SC,Number=1,Type=Flag,Description="When there is no softclipping of the mate read location, an appromiate position is used">
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
703 ##FORMAT=<ID=GT,Number=1,Type=String,Description="Dummy value for maintaining VCF-Spec">
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
704 #CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\t$SAMPLE_NAME\n};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
705
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
706 print OUT $header;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
707 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
708
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
709
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
710 ###############################################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
711 sub bulk_work {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
712 my ($side, $line, $file) = @_;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
713 my $local_levD = 0;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
714 my $distl_levD = 0;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
715
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
716 #my @info = split(/\t/, $line);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
717 my @plus_Reads = split(/\t/, $line);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
718 $plus_Reads[7] =~ s/\n//g;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
719
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
720 #### softclip length and softclip size.
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
721 my $lSC = $plus_Reads[4];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
722 my $nSC = $plus_Reads[6];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
723
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
724
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
725 #Get all types of compatible reads
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
726 #Get improperly paired reads (@ max distance)
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
727
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
728 #### default value for left SIDE.
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
729 #If left-clip, then look downstream for match of softclipped reads to define a deletion, but look for DRPs upstream
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
730 my $sv_type = "SVTYPE=BND";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
731 my $start_local=0; my $end_local=0;my $target_local="";my $target_drp="";my $start_drp="";my $end_drp="";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
732 if ($side =~ /left/) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
733 $start_local = $plus_Reads[1]-$dist_To_Soft;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
734 $end_local = $plus_Reads[2];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
735 $start_drp = $plus_Reads[1];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
736 $end_drp = $plus_Reads[1]+$dist_To_Soft;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
737
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
738 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
739 else{
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
740 $start_local = $plus_Reads[1];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
741 $end_local = $plus_Reads[1]+$dist_To_Soft;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
742 $start_drp = $plus_Reads[1]-$dist_To_Soft;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
743 $end_drp = $plus_Reads[1];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
744 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
745
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
746 $target_local=join("", $plus_Reads[0], ":", $start_local, "-", $end_local);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
747 $target_drp=join("", $plus_Reads[0], ":", $start_drp, "-", $end_drp);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
748 my $num_unmapped_pairs="";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
749 if ($side =~ /right/) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
750 $num_unmapped_pairs=`samtools view $new_blacklist -q $MapQ -f8 -F 1536 -c $file $target_drp`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
751 } else {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
752 $num_unmapped_pairs=`samtools view $new_blacklist -q $MapQ -f24 -F 1536 -c $file $target_drp`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
753 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
754 if($verbose){print "samtools view $new_blacklist -q $MapQ -f24 -F 1536 -c $file $target_drp\n";}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
755
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
756 $num_unmapped_pairs=~s/\n//;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
757 if($verbose){print "NUM UNMAPPED PAIRS= $num_unmapped_pairs\n";}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
758 my $REF1_base = "";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
759 my $REF2_base = "";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
760 my $INFO_1 = "";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
761 my $INFO_2 = "";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
762 my $ALT_1 = "";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
763 my $ALT_2 = "";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
764 my $isize = 0;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
765 my $QUAL = "";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
766 my $FORMAT = "GT:";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
767
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
768 #### get 8 bit rand id
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
769 my $BND1_name = join "", map { ("a".."z")[rand 26] } 1..8;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
770 my $BND2_name = join "", map { ("a".."z")[rand 26] } 1..8;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
771 $BND1_name=join "_","BND",$BND1_name;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
772 $BND2_name=join "_","BND",$BND2_name;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
773
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
774 my $counts = {CTX => 0, DEL => 0, INS => 0, INV => 0, TDUP => 0, NOV_INS => 0 };
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
775 my $event_mate_info = {CTX => "", DEL => "", INS => "", INV => "", TDUP => "", NOV_INS => "" };
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
776
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
777 #### get mate pair info and counts per event
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
778 foreach my $e (sort keys %{$counts}) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
779 my $h = get_counts_n_info($e, $side, $MapQ, $file, $dist_To_Soft, $target_drp, $upper_limit, $lower_limit);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
780
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
781 $counts->{$e} = $h->{count};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
782 $event_mate_info->{$e} = $h->{info};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
783 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
784
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
785 my $max = 0;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
786 my $type = "UNKNOWN";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
787 my $nRP = 0;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
788 my $mate_info = "NA\tNA\tNA\tNA";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
789 my $summary = "GT:";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
790
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
791 #### find max count of events and set type, nRP and info to corresponding
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
792 #### max count event.
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
793 #### also create a summary string of all counts to be added to VCF file.
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
794 foreach my $e (sort keys %{$counts}){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
795 # if ($counts->{$e} >=i $max){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
796 if ($counts->{$e} > $max){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
797 $type = $e .",". $counts->{$e};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
798 $nRP = $counts->{$e};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
799
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
800 $max = $counts->{$e};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
801
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
802 if (length($event_mate_info->{$e})) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
803 $mate_info = $event_mate_info->{$e};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
804 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
805 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
806
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
807 $summary .= $e .",". $counts->{$e} .":";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
808 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
809 #print "done with Summaryi=$summary\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
810 #### remove last colon ":" from
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
811 $summary =~ s/:$//;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
812 if (($minRP > $max)&&(!$disable_RP_only )){return};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
813
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
814 #### Run Levenstein distance on softclip in target region to find out if its a small deletion/insetion
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
815 #### passing 1: clip_seq, 2: chr, 3: start, 4: end, 5: ref file.
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
816 my $levD = new LevD;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
817 ########################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
818 ########################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
819 ########################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
820
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
821 #### redefine start and end location for LevD calc.
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
822 # $start = $plus_Reads[1]-$dist_To_Soft;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
823 # $end = $plus_Reads[2];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
824 my $num_bases_to_loc=0;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
825 my $new_start=0;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
826 my $new_end=0;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
827 my $del_seq="";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
828 my $start = $start_local;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
829 my $end = $end_local;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
830 if ($lSC=~/NA/){$lSC=0}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
831
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
832 if ($side =~ /right/) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
833 $levD->search($plus_Reads[3], $plus_Reads[0], $start, $end, $INPUT_FASTA);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
834 $local_levD = sprintf("%.2f", $levD->{relative_edit_dist});
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
835 $num_bases_to_loc=$levD->{index};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
836 $new_start = $plus_Reads[2];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
837 if ($plus_Reads[2]=~/^[0-9]/){$new_end=$plus_Reads[2]+$lSC};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
838 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
839 else{
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
840 $levD->search($plus_Reads[3], $plus_Reads[0], $start, $end, $INPUT_FASTA);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
841 $local_levD = sprintf("%.2f", $levD->{relative_edit_dist});
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
842 $num_bases_to_loc=$levD->{index};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
843 if ($plus_Reads[2]=~/^[0-9]/){$new_start=$plus_Reads[2]-$lSC};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
844 $new_end = $plus_Reads[2];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
845 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
846 return if((!$new_start)||(!$new_end));
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
847 return if ($new_start<0);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
848 $del_seq=getBases($plus_Reads[0], $new_start,$new_end,$INPUT_FASTA);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
849 ##############################################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
850 # #If there is a match, where is the start position of the match?
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
851 #
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
852 ##############################################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
853
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
854
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
855 #if $plus_Reads[3] eq "NA", then it was found without soft-clipped reads
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
856 if($plus_Reads[3] !~ /NA/){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
857 if (($local_levD < $levD_local_threshold)) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
858 return if (!$sv_only);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
859 #### add value to summary to be written to vcf file.
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
860 $summary = "GT:sDel," . $plus_Reads[6];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
861 $type = "sDEL";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
862 ###########################################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
863 ##### Printing output
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
864
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
865 #########################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
866 ##### Get DNA info
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
867 #########################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
868 #$REF1_base = getSeq($plus_Reads[0], $plus_Reads[1], $INPUT_FASTA);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
869 $REF1_base = substr($del_seq, 0, 1);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
870
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
871 #### this is alt ref. for softclip its $plus_Reads[3]
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
872 $REF2_base = $del_seq;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
873 $QUAL = 1/($local_levD + 0.001);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
874 $QUAL = sprintf("%.2f",$QUAL);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
875 $isize = length($del_seq);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
876
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
877 #### svtype = none for sDEL
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
878 #### isize = length($info[3]);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
879 #### nRP = NA
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
880 #### mate_id = NA
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
881 #### CTX,:DEL,:....sDEL,##
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
882 $INFO_1=join(";", "SVTYPE=NA", "EVENT=$type", "ISIZE=$isize");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
883
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
884 #Add Sample infomration
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
885 my $FORMAT="GT:sDEL";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
886 $FORMAT .= ":lSC:nSC:uRP:levD_local";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
887 my $SAMPLE= "0/1:";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
888 $SAMPLE .= "$plus_Reads[6]:$lSC:$nSC:$num_unmapped_pairs:$local_levD";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
889
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
890 #### remove any white spaces.
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
891 $INFO_1=~s/\s//g;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
892 $INFO_2=~s/\s//g;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
893
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
894 $BND1_name =~ s/^BND/LEVD/;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
895 # If left, then the start position is plus_Reads[1]-isize
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
896 my $start_pos=0;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
897 #Make sure Ref1 and Ref2 bases are different
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
898 if($REF2_base eq $REF1_base){$REF1_base="NA"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
899 if($side=~/left/){$start_pos=$plus_Reads[1]-$isize}else{$start_pos=$plus_Reads[1]};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
900 my $var=join("\t", $plus_Reads[0], $start_pos, $BND1_name, $REF2_base, $REF1_base, $QUAL, "PASS", $INFO_1,$FORMAT,$SAMPLE);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
901 return $var;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
902 #print OUT join ("\t", $plus_Reads[0], $start_pos, $BND1_name, $REF2_base, $REF1_base, $QUAL, "PASS", $INFO_1,$FORMAT,$SAMPLE, "\n");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
903 # return;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
904 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
905 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
906
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
907 #### Otherwise, look for DRP mate info
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
908 #if($nRP=~/NA/){print "MATE_INFO=$mate_info\tSide=$side\tline=$line\n";}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
909 my @mate_info_arr = split(/\t/, $mate_info);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
910 $nRP = $mate_info_arr[3];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
911 my $mate_chr=$mate_info_arr[0];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
912
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
913 if((! defined $nRP) || ($nRP =~ /na/i) || ($mate_chr =~ /NA/) ){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
914 #PRINT UNKNOWN
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
915 return if ($nRP =~ /na/i);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
916 #print "There is an unknown\nNRP=$nRP Mate_CHR=$mate_chr minRP=$minRP\n";die;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
917 $summary .= ":unknown," . $plus_Reads[6];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
918 $type = "unknown";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
919 $REF1_base = getSeq($plus_Reads[0], $plus_Reads[1], $INPUT_FASTA);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
920 $REF2_base = $plus_Reads[3];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
921 $BND1_name =~ s/^BND/UNKNOWN/;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
922 $QUAL = 1/($local_levD + 0.001);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
923 $QUAL = sprintf("%.2f",$QUAL);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
924 $INFO_1=join(";", "SVTYPE=unknown", "EVENT=unknown", "ISIZE=unknown");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
925 #Add Sample infomration
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
926 my $FORMAT="GT:sDEL";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
927 $FORMAT .= ":lSC:nSC:uRP:levD_local";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
928 my $SAMPLE = "0/1:";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
929 $SAMPLE .= "$plus_Reads[6]:$lSC:$nSC:$num_unmapped_pairs:$local_levD";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
930 #### remove any white spaces.
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
931 $INFO_1=~s/\s//g;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
932 #print join ("\t", $plus_Reads[0], $plus_Reads[1], $REF2_base, $REF1_base, $QUAL, "PASS", $INFO_1,$FORMAT,$SAMPLE, "\n");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
933
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
934 #print OUT join ("\t", $plus_Reads[0], $plus_Reads[1], $BND1_name, $REF1_base, $REF2_base, $QUAL, "PASS", $INFO_1,$FORMAT,$SAMPLE, "\n");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
935 my $var=join("\t", $plus_Reads[0], $plus_Reads[1], $BND1_name, $REF1_base, $REF2_base, $QUAL, "PASS", $INFO_1,$FORMAT,$SAMPLE);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
936 return $var;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
937
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
938 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
939
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
940 #### end if there is no mate info or nRP+uRP<minRP
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
941 return if (($nRP<$minRP)&&($unmated_pairs > ($num_unmapped_pairs+$nRP)));
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
942
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
943 ##################################################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
944 # Find out if mates have nearby soft-clips (to refine the breakpoints)
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
945 ##################################################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
946 #Look for evidence of soft-clipping near mate
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
947 my @mate_soft_arr = ();
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
948 my $mate_start = 0;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
949 my $mate_soft = "";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
950
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
951 @mate_info_arr = split(/\t/, $mate_info);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
952
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
953 #### mate start and end locations.
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
954 my $filename = $right_sc;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
955
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
956 $start = $mate_info_arr[1] - $dist_To_Soft;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
957 $end = $mate_info_arr[1];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
958
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
959 if ($side =~ /right/) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
960 $start = $mate_info_arr[2];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
961 $end = $mate_info_arr[2] + $dist_To_Soft;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
962
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
963 $filename = $left_sc;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
964 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
965
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
966 #### add levenstein distance to Summary
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
967 #print "Calc distal Levd\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
968 $levD->search(rev_comp($plus_Reads[3]), $mate_info_arr[0], $start, $end, $INPUT_FASTA);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
969 $distl_levD = sprintf("%.2f", $levD->{relative_edit_dist});
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
970 $distl_levD = "NA" if($plus_Reads[3] =~ /NA/);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
971 #If there is no softclips to string match, then give 0 as quality value
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
972 if ($plus_Reads[3] !~ /NA/){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
973 $QUAL=1/($distl_levD + 0.001);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
974 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
975 else {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
976 $QUAL=0;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
977 };
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
978 $QUAL=sprintf("%.2f",$QUAL);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
979 #### looking for softclips to refine break point
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
980 #### if left look in right and vice-versa.
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
981 $cmd = qq{echo -e "$mate_info_arr[0]\t$start\t$end"};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
982 $cmd .= qq{ | awk -F'\t' 'NR==3' | intersectBed -a stdin -b $filename | head -1};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
983
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
984 $mate_soft = `$cmd`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
985
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
986 $mate_soft =~ s/\n//g;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
987 @mate_soft_arr = split(/\s/, $mate_soft);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
988 my $NO_MATE_SC="";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
989 if(@mate_soft_arr){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
990 $mate_chr = $mate_soft_arr[0];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
991 $mate_start = $mate_soft_arr[1];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
992 $NO_MATE_SC="APPROXIMATE";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
993
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
994 } else{
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
995 @mate_info_arr = split(/\s/,$mate_info);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
996 $mate_chr = $mate_info_arr[0];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
997 $mate_start = $mate_info_arr[1];
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
998 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
999
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1000 #end if there is no mate info
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1001 return if ($mate_chr eq "");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1002 #end if there is no mate info and !disable_RP_only
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1003 return if (($lSC =~/NA/)&&(!$disable_RP_only));
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1004
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1005
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1006 ###########################################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1007 ##### Printing output
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1008
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1009 #########################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1010 # Get DNA info
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1011 #########################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1012 #print "PLUS_READS=$plus_Reads[0],$plus_Reads[1]\nMATE=$mate_chr,$mate_start,$INPUT_FASTA\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1013 $REF1_base = getSeq($plus_Reads[0], $plus_Reads[1], $INPUT_FASTA);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1014
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1015 ### this is alt ref. for softclip its $plus_Reads[3]
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1016 $REF2_base = getSeq($mate_chr, $mate_start, $INPUT_FASTA);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1017
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1018 #########################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1019 # print in VCF format
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1020 #########################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1021
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1022 #### abs value to account for left and right reads.
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1023 $isize = abs($plus_Reads[1]-$mate_start);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1024
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1025 my $event_type=$type;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1026 $event_type=~ s/,|[0-9]//g;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1027 $INFO_1=join(";", "$sv_type", "EVENT=$event_type", "ISIZE=$isize","MATE_ID=$BND2_name");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1028 $INFO_2=join(";", "$sv_type", "EVENT=$event_type", "ISIZE=$isize","MATE_ID=$BND1_name");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1029
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1030 #### remove any white spaces.
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1031 #### ask: did you mean to remove space from ends? eg. trim()
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1032 $INFO_1=~s/\s//g;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1033 $INFO_2=~s/\s//g;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1034
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1035 $FORMAT=$summary;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1036 $FORMAT=~ s/,|[0-9]//g;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1037 $FORMAT .= ":lSC:nSC:uRP:distl_levD";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1038 if($NO_MATE_SC){$INFO_2 .= ":NO_MATE_SC"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1039 my $SAMPLE="0/1:";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1040 $SAMPLE .=$summary;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1041 # if($NO_MATE_SC){$SAMPLE.= ":$NO_MATE_SC"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1042
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1043 $SAMPLE=~s/[A-Z|,|_]//g;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1044 my $MATE_SAMPLE=$SAMPLE;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1045 $SAMPLE .= ":$lSC:$nSC:$num_unmapped_pairs:$distl_levD";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1046 $MATE_SAMPLE .=":NA:NA:NA:NA";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1047 $SAMPLE=~s/::/:/g;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1048 $MATE_SAMPLE=~s/::/:/g;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1049
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1050 if($type !~ /INV/){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1051 $ALT_1 = join("","]",$mate_chr,":",$mate_start,"]",$REF1_base);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1052 $ALT_2 = join("",$REF2_base,"[",$plus_Reads[0],":",$plus_Reads[1],"[");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1053 # 2 321682 bnd_V T ]13:123456]T 6 PASS SVTYPE=BND
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1054 # 13 123456 bnd_U C C[2:321682[ 6 PASS SVTYPE=BND
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1055 } else {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1056 $ALT_1 = join("", "]", $plus_Reads[0], ":", $plus_Reads[1], "]", $REF2_base);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1057 $ALT_2 = join("", $REF1_base, "[", $mate_chr, ":", $mate_start, "[");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1058 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1059
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1060 if(($mate_chr) && ($plus_Reads[0])){
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1061 # print OUT join ("\t", $plus_Reads[0], $plus_Reads[1], $BND1_name, $REF1_base, $ALT_1, $QUAL,"PASS", $INFO_1, $FORMAT,$SAMPLE,"\n");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1062 # print OUT join ("\t", $mate_chr, $mate_start, $BND2_name, $REF2_base, $ALT_2, $QUAL, "PASS", $INFO_2, $FORMAT,$MATE_SAMPLE,"\n");
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1063 my $var=join ("\t", $plus_Reads[0], $plus_Reads[1], $BND1_name, $REF1_base, $ALT_1, $QUAL,"PASS", $INFO_1, $FORMAT,$SAMPLE);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1064 return $var;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1065 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1066 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1067
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1068 ###############################################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1069 ###############################################################################
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1070 sub get_counts_n_info {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1071 my ($event, $side, $mapQ, $file, $dist, $target, $upL, $lwL) = @_;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1072
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1073 my $mate_info = "";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1074 my $cmd = "";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1075
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1076 if ($event =~ /^CTX$/i) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1077 #print "CTX side $side\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1078 if ($side =~ /right/i) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1079 $cmd = qq{samtools view $new_blacklist -q $mapQ -f 32 -F 1536 $file $target};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1080 $cmd .= qq{ | perl -ane 'if(\$F[6] ne "="){\$end=\$F[7]+1; print join ("\\t",\$F[6],\$F[7],\$end,"\\n")}'};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1081 $cmd .= qq{ | sortBed | mergeBed -d $dist -n | sort -k4nr | head -1};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1082 if($verbose){print "$cmd\n"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1083 $mate_info=`$cmd`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1084 } else {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1085 $cmd = qq{ samtools view $new_blacklist -q $mapQ -f 16 -F 1536 $file $target};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1086 $cmd .= qq{ | perl -ane 'if(\$F[6] ne "="){\$end=\$F[7]+1; print join ("\\t",\$F[6],\$F[7],\$end,"\\n")}'};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1087 $cmd .= qq{ | sortBed | mergeBed -d $dist -n | sort -k4nr | head -1};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1088 if($verbose){print "$cmd\n"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1089 $mate_info=`$cmd`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1090 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1091 } elsif ($event =~ /^DEL$/i) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1092 #print "DEL side $side\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1093 if ($side =~ /right/i) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1094 $cmd = qq{samtools view $new_blacklist -q $mapQ -f 32 -F 1552 $file $target};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1095 $cmd .= qq{ | awk '{OFS="\\t"}{if((\$7 ~ /=/)&&(\$9>$upL)){end=\$8+1;print \$3,\$8,end}}'};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1096 $cmd .= qq{ | sortBed | mergeBed -d $dist -n | sort -k4nr | head -1};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1097 if($verbose){print "$cmd\n"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1098 $mate_info=`$cmd`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1099 } else {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1100 $cmd = qq{samtools view $new_blacklist -q $mapQ -F 1568 -f 16 $file $target};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1101 $cmd .= qq{ | awk '{OFS="\\t"} {if((\$7 ~ /=/)&&(\$9<-$upL)){end=\$8+1;print \$3,\$8,end}}'};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1102 $cmd .= qq{ | sortBed | mergeBed -d $dist_To_Soft -n | sort -k4nr | head -1};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1103 if($verbose){print "$cmd\n"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1104
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1105 $mate_info=`$cmd`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1106 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1107 } elsif ($event =~ /^INS$/i) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1108 #print "INS side $side\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1109 if ($side =~ /right/i) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1110 $cmd = qq{samtools view $new_blacklist -q $mapQ -f 32 -F 1552 $file $target};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1111 $cmd .= qq{ | awk '{OFS="\\t"}{if((\$7 ~ /=/)&&(\$9<$lwL && \$9 > 0 )){end=\$8+1;print \$3,\$8,end}}'};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1112 $cmd .= qq{ | sortBed | mergeBed -d $dist -n | sort -k4nr | head -1};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1113 if($verbose){print "$cmd\n"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1114 $mate_info = `$cmd`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1115 } else {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1116 $cmd = qq {samtools view $new_blacklist -q $mapQ -f 16 -F 1568 $file $target};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1117 $cmd .= qq{ | awk '{OFS="\\t"}{if((\$7 ~ /=/)&&(\$9>-$lwL && \$9 < 0 )){end=\$8+1;print \$3,\$8,end}}'};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1118 $cmd .= qq{ | sortBed | mergeBed -d $dist -n | sort -k4nr | head -1};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1119 if($verbose){print "$cmd\n"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1120 $mate_info = `$cmd`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1121 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1122 } elsif ($event =~ /^INV$/i) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1123 #print "INV side $side\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1124 if ($side =~ /right/i) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1125 $cmd = qq{samtools view $new_blacklist -q $mapQ -F 1596 $file $target};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1126 $cmd .= qq{ | awk '{OFS="\\t"}{if((\$7 ~ /=/)){end=\$8+1;print \$3,\$8,end}}'};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1127 $cmd .= qq{ | sortBed | mergeBed -d $dist_To_Soft -n | sort -k4nr | head -1};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1128 if($verbose){print "$cmd\n"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1129 $mate_info = `$cmd`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1130 } else {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1131 $cmd = qq{samtools view $new_blacklist -q $mapQ -f 48 -F 1548 $file $target};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1132 $cmd .= qq{ | awk '{OFS="\\t"}{if((\$7 ~ /=/)){end=\$8+1;print \$3,\$8,end}}'};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1133 $cmd .= qq{ | sortBed | mergeBed -d $dist -n | sort -k4nr | head -1};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1134 if($verbose){print "$cmd\n"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1135 $mate_info = `$cmd`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1136 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1137 } elsif ($event =~ /^TDUP$/i) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1138 #print "TDUP side $side\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1139 if ($side =~ /right/i) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1140 $cmd = qq{samtools view $new_blacklist -q $mapQ -f 32 -F 1552 $file $target};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1141 # $cmd .= qq{ | awk '{OFS="\\t"}{if((\$7 ~ /=/)&&(\$9>$upL)){end=\$8+1;print \$3,\$8,end}}'};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1142 $cmd .= qq{ | awk '{OFS="\\t"}{if((\$7 ~ /=/)&&(\$4>\$8)&&(\$9<0)){end=\$8+1;print \$3,\$8,end}}'};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1143 $cmd .= qq{ | sortBed | mergeBed -d $dist -n | sort -k4nr | head -1};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1144 if($verbose){print "$cmd\n"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1145 $mate_info = `$cmd`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1146 } else {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1147 $cmd = qq{samtools view $new_blacklist -q $mapQ -f 16 -F 1568 $file $target};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1148 # $cmd .= qq{ | awk '{OFS="\\t"}{if((\$7 ~ /=/)&&(\$9<-$upL )){end=\$8+1;print \$3,\$8,end}}'};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1149 $cmd .= qq{ | awk '{OFS="\\t"}{if((\$7 ~ /=/)&&(\$4<\$8)&&(\$9>0)){end=\$8+1;print \$3,\$8,end}}'};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1150 $cmd .= qq{ | sortBed | mergeBed -d $dist -n | sort -k4nr | head -1};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1151 if($verbose){print "$cmd\n"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1152 $mate_info = `$cmd`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1153 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1154 } elsif ($event =~ /^NOV_INS$/i) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1155 #print "NOV_INS side $side\n";
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1156 if ($side =~ /right/i) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1157 $cmd = qq{samtools view $new_blacklist -q $mapQ -f 8 -F 1552 $file $target};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1158 $cmd .= qq{ | awk '{OFS="\\t"}{end=\$8+1;print \$3,\$8,end}'};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1159 $cmd .= qq{ | sortBed | mergeBed -d $dist -n | sort -k4nr | head -1};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1160 if($verbose){print "$cmd\n"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1161 $mate_info = `$cmd`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1162 } else {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1163 $cmd = qq{samtools view $new_blacklist -q $mapQ -f 24 -F 1536 $file $target};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1164 $cmd .= qq{ | awk '{OFS="\\t"}{end=\$8+1;print \$3,\$8,end}'};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1165 $cmd .= qq{ | sortBed | mergeBed -d $dist -n | sort -k4nr | head -1};
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1166 if($verbose){print "$cmd\n"}
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1167 $mate_info = `$cmd`;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1168 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1169 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1170
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1171 $mate_info=~s/\n//g;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1172 my @tmp=split(/\t/, $mate_info);
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1173
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1174 my $counts = 0;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1175
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1176 if (defined $tmp[3]) {
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1177 $tmp[3] =~ s/\n//g;
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1178
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1179 $counts = $tmp[3] if (length($tmp[3]));
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1180 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1181 return ({count=>$counts, info=>$mate_info});
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1182 }
8eb7d93f7e58 Uploaded
plus91-technologies-pvt-ltd
parents:
diff changeset
1183