annotate ngsap-vc/svdetect/SVDetect_compare.pl @ 3:0d10255b5434 draft default tip

Uploaded
author scisjnu123
date Thu, 03 Oct 2019 10:42:15 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
1 #!/usr/bin/perl -w
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
2
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
3 =pod
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
4
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
5 =head1 NAME
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
6
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
7 SVDetect Compare for Galaxy
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
8
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
9 Version: 0.8b for Galaxy
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
10
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
11 =head1 SYNOPSIS
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
12
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
13 SVDetect_compare.pl links2compare -conf <configuration_file> [-help] [-man]
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
14
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
15 =cut
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
16
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
17 # -------------------------------------------------------------------
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
18
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
19 use strict;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
20 use warnings;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
21
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
22 use Pod::Usage;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
23 use Getopt::Long;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
24
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
25 use Config::General;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
26 use Tie::IxHash;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
27
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
28 #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
29 #PARSE THE COMMAND LINE
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
30 my %OPT;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
31 GetOptions(\%OPT,
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
32 'conf=s',
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
33 'out1=s', #GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
34 'out2=s', #GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
35 'out3=s', #GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
36 'out4=s', #GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
37 'out5=s', #GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
38 'out6=s', #GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
39 'out7=s', #GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
40 'out8=s', #GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
41 'out9=s', #GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
42 'l=s', #GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
43 'N=s', #GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
44 'help',
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
45 'man'
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
46 );
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
47
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
48 pod2usage() if $OPT{help};
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
49 pod2usage(-verbose=>2) if $OPT{man};
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
50 pod2usage(-message=> "$!", -exitval => 2) if (!defined $OPT{conf});
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
51
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
52
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
53 pod2usage() if(@ARGV<1);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
54
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
55 tie (my %func, 'Tie::IxHash',links2compare=>\&links2compare);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
56
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
57 foreach my $command (@ARGV){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
58 pod2usage(-message=> "Unknown command \"$command\"", -exitval => 2) if (!defined($func{$command}));
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
59 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
60 #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
61
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
62 #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
63 #READ THE CONFIGURATION FILE
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
64 my $conf=Config::General->new( -ConfigFile => $OPT{conf},
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
65 -Tie => "Tie::IxHash",
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
66 -AllowMultiOptions => 1,
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
67 -LowerCaseNames => 1,
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
68 -AutoTrue => 1);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
69 my %CONF= $conf->getall;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
70 validateconfiguration(\%CONF); #validation of the configuration parameters
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
71
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
72
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
73 my $SAMTOOLS_BIN_DIR="/bioinfo/local/samtools"; #GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
74 my $BEDTOOLS_BIN_DIR="/bioinfo/local/BEDTools/bin"; #GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
75
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
76 my $pt_log_file=$OPT{l}; #GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
77 my $log_file=$CONF{general}{output_dir}.$OPT{N}.".svdetect_compare.log"; #GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
78 open LOG,">$log_file" or die "$0: can't open ".$log_file.":$!\n";#GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
79
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
80 my @pt_sv_file=($OPT{out1},$OPT{out2},$OPT{out3}) if($OPT{out1}); #GALAXY common,sample,reference
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
81 my @pt_circos_file=($OPT{out4},$OPT{out5},$OPT{out6}) if($OPT{out4}); #GALAXY common,sample,reference
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
82 my @pt_bed_file=($OPT{out7},$OPT{out8},$OPT{out9}) if($OPT{out7}); #GALAXY common,sample,reference
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
83
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
84 $CONF{compare}{sample_link_file}=readlink($CONF{compare}{sample_link_file});#GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
85 $CONF{compare}{sample_link_file}=~s/.sv.txt//; #GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
86
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
87 $CONF{compare}{reference_link_file}=readlink($CONF{compare}{reference_link_file});#GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
88 $CONF{compare}{reference_link_file}=~s/.sv.txt//; #GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
89
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
90 #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
91
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
92 #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
93 #COMMAND EXECUTION
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
94 foreach my $command (@ARGV){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
95 &{$func{$command}}();
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
96 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
97 print LOG "-- end\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
98
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
99 close LOG;#GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
100 system "rm $pt_log_file ; ln -s $log_file $pt_log_file"; #GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
101
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
102 exit(0);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
103 #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
104
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
105 #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
106 #FUNCTIONS
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
107
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
108 # -----------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
109 #MAIN FUNCTION number 5:Comparison between samples, common or specific links
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
110 sub links2compare{
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
111
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
112 my @compare_files;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
113
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
114 compareSamples($CONF{general}{output_dir},
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
115 $CONF{compare}{list_samples},
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
116 $CONF{compare}{sample_link_file},
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
117 $CONF{compare}{reference_link_file},
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
118 $CONF{compare}{min_overlap},
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
119 $CONF{compare}{same_sv_type},
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
120 \@compare_files);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
121
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
122 my $pt_ind=0;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
123
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
124 for my $input_file (@compare_files){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
125
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
126 $input_file=$CONF{general}{output_dir}.$input_file;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
127
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
128 my $output_file=$input_file;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
129 $output_file=~s/unique$/compared/;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
130
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
131 sortLinks($input_file, $output_file,1);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
132
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
133 if($CONF{compare}{circos_output}){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
134 links2segdup($CONF{circos}{organism_id},
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
135 $CONF{circos}{colorcode},
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
136 $output_file,
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
137 $output_file.".segdup.txt");
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
138 system "rm $pt_circos_file[$pt_ind]; ln -s $output_file.segdup.txt $pt_circos_file[$pt_ind]" if (defined $pt_circos_file[$pt_ind]); #GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
139 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
140
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
141 if($CONF{compare}{bed_output}){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
142 links2bedfile($CONF{compare}{read_lengths},
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
143 $CONF{bed}{colorcode},
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
144 $output_file,
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
145 $output_file.".bed");
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
146 system "rm $pt_bed_file[$pt_ind]; ln -s $output_file.bed $pt_bed_file[$pt_ind]" if (defined $pt_bed_file[$pt_ind]); #GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
147 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
148
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
149 if($CONF{compare}{sv_output}){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
150
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
151 links2SVfile ($output_file, $output_file.".sv.txt");
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
152 system "rm $pt_sv_file[$pt_ind]; ln -s $output_file.sv.txt $pt_sv_file[$pt_ind]" if (defined $pt_sv_file[$pt_ind]); #GALAXY
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
153 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
154 $pt_ind++;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
155
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
156 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
157 unlink(@compare_files);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
158
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
159 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
160 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
161 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
162 sub compareSamples{
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
163
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
164 my ($dir,$list_samples,$sample_file,$reference_file,$min_overlap,$same_sv_type,$file_names)=@_;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
165
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
166 my @bedpefiles;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
167 my @list=split(",",$list_samples);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
168 my @list_files=($sample_file,$reference_file);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
169
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
170 print LOG "\# Comparison procedure...\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
171 print LOG "-- samples=$list_samples\n".
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
172 "-- minimum overlap=$min_overlap\n".
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
173 "-- same SV type=$same_sv_type\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
174
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
175 #conversion of links to bedPE format file
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
176 print LOG "-- Conversion of links.filtered files to bedPE format\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
177 for my $s (0..$#list) {
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
178
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
179 links2bedPElinksfile($list[$s],$list_files[$s],$list_files[$s].".bedpe.txt");
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
180 push(@bedpefiles,$list_files[$s].".bedpe.txt");
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
181
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
182 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
183
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
184 #get common links between all samples compared
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
185 print LOG "-- Getting common links between all samples with BEDTools\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
186 my $common_name=join(".",@list);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
187
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
188 my $nb=scalar @list;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
189 my $command="";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
190 my $prompt=">";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
191
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
192 while ($nb>0){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
193
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
194 for my $i (0..$#list_files){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
195
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
196 $command.="$BEDTOOLS_BIN_DIR/pairToPair -type both -f $min_overlap -a ".$list_files[$i].".bedpe.txt";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
197 my $pipe=0;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
198
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
199 for my $j ($i+1..$#list_files){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
200
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
201 $command.="| $BEDTOOLS_BIN_DIR/pairToPair -type both -f $min_overlap -a stdin" if($pipe);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
202 $command.=" -b ".$list_files[$j].".bedpe.txt";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
203 $pipe=1;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
204
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
205 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
206
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
207 $command.=$prompt.$dir.$common_name.".bedpe.tmp;";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
208 $prompt=">>";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
209
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
210 my $first=shift(@list_files); push(@list_files,$first);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
211 last;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
212 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
213 $nb--;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
214 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
215
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
216 system ($command);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
217
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
218 push(@bedpefiles,$dir.$common_name.".bedpe.tmp");
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
219
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
220 #Post comparison to get common links if same type only (as an option)
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
221 open( FILE, "<".$dir.$common_name.".bedpe.tmp") or die "Can't open".$dir.$common_name.".bedpe.tmp : $!";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
222 open( OUT, ">".$dir.$common_name.".bedpe.unique") or die "Can't write in ".$dir.$common_name.".bedpe.unique : $!";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
223
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
224 while(<FILE>){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
225 my @t=split("\t",$_);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
226 my $s=(split("_",$t[6]))[0];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
227 my ($sv1,$sv2)=($t[7],$t[18]);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
228 splice(@t,11,$#t);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
229
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
230 if($same_sv_type){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
231 print OUT join("\t",@t)."\n" if($sv1 eq $sv2);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
232 }else{
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
233 print OUT join("\t",@t)."\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
234 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
235 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
236 close FILE;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
237 close OUT;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
238
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
239 bedPElinks2linksfile($dir.$common_name.".bedpe.unique", $dir.$common_name.".unique");
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
240 push(@bedpefiles,$dir.$common_name.".bedpe.unique");
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
241 push(@$file_names,$common_name.".unique");
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
242 print LOG "-- output created: ".$dir.$common_name.".compared\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
243
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
244 #get specific links for each sample
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
245 print LOG "-- Getting specific links for each sample\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
246 for my $s (0..$#list) {
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
247 system("grep -Fxv -f ".$dir.$common_name.".bedpe.unique ".$list_files[$s].".bedpe.txt >".$dir.$list[$s].".bedpe.unique");
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
248 bedPElinks2linksfile($dir.$list[$s].".bedpe.unique",$dir.$list[$s].".unique");
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
249 push(@bedpefiles,$dir.$list[$s].".bedpe.unique");
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
250 push(@$file_names,$list[$s].".unique");
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
251 print LOG "-- output created: ".$dir.$list[$s].".compared\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
252 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
253
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
254 unlink(@bedpefiles);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
255
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
256 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
257 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
258 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
259 #convert the links file to the circos format
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
260 sub links2segdup{
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
261
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
262 my($id,$color_code,$links_file,$segdup_file)=@_;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
263
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
264 print LOG "\# Converting to the circos format...\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
265
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
266 tie (my %hcolor,'Tie::IxHash'); #color-code hash table
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
267 foreach my $col (keys %{$color_code}){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
268 my ($min_links,$max_links)=split(",",$color_code->{$col});
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
269 $hcolor{$col}=[$min_links,$max_links];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
270 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
271
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
272 open LINKS, "<$links_file" or die "$0: can't open $links_file :$!\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
273 open SEGDUP, ">$segdup_file" or die "$0: can't write in the output: $segdup_file :$!\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
274
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
275 my $index=1;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
276 while(<LINKS>){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
277
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
278 my ($chr1,$start1,$end1,$chr2,$start2,$end2,$count)=(split)[0,1,2,3,4,5,6];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
279
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
280 my $color=getColor($count,\%hcolor,"circos"); #get the color-code according the number of links
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
281
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
282 print SEGDUP "$index\t$id$chr1\t$start1\t$end1\tcolor=$color\n". #circos output
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
283 "$index\t$id$chr2\t$start2\t$end2\tcolor=$color\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
284 $index++;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
285 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
286
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
287 close LINKS;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
288 close SEGDUP;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
289 print LOG "-- output created: $segdup_file\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
290 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
291 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
292 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
293 #convert the links file to the bedPE format for BEDTools usage
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
294 sub links2bedPElinksfile{
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
295
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
296 my ($sample,$links_file,$bedpe_file)=@_;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
297
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
298 open LINKS, "<$links_file" or die "$0: can't open $links_file :$!\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
299 open BEDPE, ">$bedpe_file" or die "$0: can't write in the output: $bedpe_file :$!\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
300
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
301 my $nb_links=1;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
302
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
303 while(<LINKS>){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
304
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
305 chomp;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
306 my @t=split("\t",$_);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
307 my ($chr1,$start1,$end1,$chr2,$start2,$end2)=splice(@t,0,6);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
308 my $type=($chr1 eq $chr2)? "INTRA":"INTER";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
309 $type.="_".$t[10];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
310
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
311 $start1--; $start2--;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
312
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
313 print BEDPE "$chr1\t$start1\t$end1\t$chr2\t$start2\t$end2".
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
314 "\t$sample"."_link$nb_links\t$type\t.\t.".
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
315 "\t".join("|",@t)."\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
316
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
317 $nb_links++;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
318 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
319
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
320 close LINKS;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
321 close BEDPE;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
322
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
323 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
324 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
325 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
326 sub bedPElinks2linksfile{
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
327
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
328 my ($bedpe_file,$links_file)=@_;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
329
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
330 open BEDPE, "<$bedpe_file" or die "$0: can't open: $bedpe_file :$!\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
331 open LINKS, ">$links_file" or die "$0: can't write in the output $links_file :$!\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
332
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
333 while(<BEDPE>){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
334
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
335 chomp;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
336 my $sample=(split("_",(split("\t",$_))[6]))[0];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
337 my @t1=(split("\t",$_))[0,1,2,3,4,5];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
338 my @t2=split(/\|/,(split("\t",$_))[10]);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
339 push(@t2,$sample);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
340
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
341 print LINKS join("\t",@t1)."\t".join("\t",@t2)."\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
342
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
343 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
344 close BEDPE;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
345 close LINKS;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
346
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
347 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
348 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
349 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
350 #convert the links file to the bed format
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
351 sub links2bedfile{
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
352
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
353 my ($tag_length,$color_code,$links_file,$bed_file)=@_;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
354
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
355 print LOG "\# Converting to the bed format...\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
356
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
357 my $compare=1;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
358 if($links_file!~/compared$/){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
359 $compare=0;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
360 $tag_length->{none}->{1}=$tag_length->{1};
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
361 $tag_length->{none}->{2}=$tag_length->{2};
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
362 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
363
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
364 #color-code hash table
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
365 tie (my %hcolor,'Tie::IxHash');
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
366 my %color_order;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
367 $color_order{"255,255,255"}=0;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
368 my $n=1;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
369 foreach my $col (keys %{$color_code}){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
370 my ($min_links,$max_links)=split(",",$color_code->{$col});
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
371 $hcolor{$col}=[$min_links,$max_links];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
372 $color_order{$col}=$n;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
373 $n++;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
374 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
375
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
376 my %pair;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
377 my %pt;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
378 $n=1;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
379 open LINKS, "<$links_file" or die "$0: can't open $links_file:$!\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
380
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
381 my %str=( "F"=>"+", "R"=>"-" );
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
382
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
383 while(<LINKS>){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
384
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
385 my @t=split;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
386 my $sample=($compare)? pop(@t):"none";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
387
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
388 my $chr1=$t[0];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
389 my $chr2=$t[3];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
390 $chr1 = "chr".$chr1 unless ($chr1 =~ m/chr/i);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
391 $chr2 = "chr".$chr2 unless ($chr2 =~ m/chr/i);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
392 my $same_chr=($chr1 eq $chr2)? 1:0;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
393
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
394 my $count=$t[6];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
395 my $color=getColor($count,\%hcolor,"bed");
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
396
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
397 my @pairs=deleteBadOrderSensePairs(split(",",$t[7]));
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
398 my @strand1=deleteBadOrderSensePairs(split(",",$t[8]));
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
399 my @strand2=deleteBadOrderSensePairs(split(",",$t[9]));
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
400 my @ends_order1=deleteBadOrderSensePairs(split(",",$t[10]));
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
401 my @ends_order2=deleteBadOrderSensePairs(split(",",$t[11]));
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
402 my @position1=deleteBadOrderSensePairs(split(",",$t[14]));
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
403 my @position2=deleteBadOrderSensePairs(split(",",$t[15]));
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
404 my @start1; my @end1; getCoordswithLeftMost(\@start1,\@end1,\@position1,\@strand1,\@ends_order1,$tag_length->{$sample});
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
405 my @start2; my @end2; getCoordswithLeftMost(\@start2,\@end2,\@position2,\@strand2,\@ends_order2,$tag_length->{$sample});
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
406
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
407
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
408 for my $p (0..$#pairs){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
409
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
410 if (!exists $pair{$pairs[$p]}){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
411
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
412 if($same_chr){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
413
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
414 $pair{$pairs[$p]}->{0}=[ $chr1, $start1[$p]-1, $end2[$p], $pairs[$p], 0, $str{$strand1[$p]},
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
415 $start1[$p]-1, $end2[$p], $color,
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
416 2, $tag_length->{$sample}->{$ends_order1[$p]}.",".$tag_length->{$sample}->{$ends_order2[$p]}, "0,".($start2[$p]-$start1[$p]) ];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
417 $pt{$n}=$pair{$pairs[$p]}->{0};
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
418 $n++;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
419
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
420 }else{
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
421
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
422 $pair{$pairs[$p]}->{1}=[ $chr1, $start1[$p]-1, $end1[$p] , $pairs[$p]."/1", 0, $str{$strand1[$p]},
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
423 $start1[$p]-1, $end1[$p], $color,
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
424 1, $tag_length->{$sample}->{$ends_order1[$p]}, 0];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
425 $pt{$n}=$pair{$pairs[$p]}->{1};
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
426 $n++;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
427
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
428
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
429 $pair{$pairs[$p]}->{2}=[ $chr2, $start2[$p]-1, $end2[$p], $pairs[$p]."/2", 0, $str{$strand2[$p]},
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
430 $start2[$p]-1, $end2[$p], $color,
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
431 1, $tag_length->{$sample}->{$ends_order2[$p]}, 0];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
432 $pt{$n}=$pair{$pairs[$p]}->{2};
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
433 $n++;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
434 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
435 }else{
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
436
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
437 if($same_chr){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
438 ${$pair{$pairs[$p]}->{0}}[8]=$color if($color_order{$color}>$color_order{${$pair{$pairs[$p]}->{0}}[8]});
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
439 }else{
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
440 ${$pair{$pairs[$p]}->{1}}[8]=$color if($color_order{$color}>$color_order{${$pair{$pairs[$p]}->{1}}[8]});
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
441 ${$pair{$pairs[$p]}->{2}}[8]=$color if($color_order{$color}>$color_order{${$pair{$pairs[$p]}->{2}}[8]});
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
442 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
443 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
444 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
445 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
446 close LINKS;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
447
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
448 my $nb_pairs=$n-1;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
449
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
450 open BED, ">$bed_file" or die "$0: can't write in the output: $bed_file :$!\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
451 print BED "track name=\"$bed_file\" description=\"mate pairs involved in links\" ".
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
452 "visibility=2 itemRgb=\"On\"\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
453
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
454 for my $i (1..$nb_pairs){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
455 print BED join("\t",@{$pt{$i}})."\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
456 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
457
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
458 close BED;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
459
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
460 print LOG "-- output created: $bed_file\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
461
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
462 undef %pair;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
463 undef %pt;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
464
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
465 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
466 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
467 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
468 sub links2SVfile{
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
469
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
470 my($links_file,$sv_file)=@_;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
471
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
472 print LOG "\# Converting to the sv output table...\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
473 open LINKS, "<$links_file" or die "$0: can't open $links_file:$!\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
474 open SV, ">$sv_file" or die "$0: can't write in the output: $sv_file :$!\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
475
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
476 my @header=qw(chr_type SV_type BAL_type chromosome1 start1-end1 average_dist
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
477 chromosome2 start2-end2 nb_pairs score_strand_filtering score_order_filtering score_insert_size_filtering
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
478 final_score breakpoint1_start1-end1 breakpoint2_start2-end2);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
479
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
480 my $nb_links=0;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
481
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
482 while (<LINKS>){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
483
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
484 my @t=split;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
485 my @sv=();
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
486 my $sv_type="-";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
487 my $strand_ratio="-";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
488 my $eq_ratio="-";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
489 my $eq_type="-";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
490 my $insert_ratio="-";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
491 my $link="-";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
492 my ($bk1, $bk2)=("-","-");
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
493 my $score="-";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
494
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
495 my ($chr1,$start1,$end1)=($t[0],$t[1],$t[2]);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
496 my ($chr2,$start2,$end2)=($t[3],$t[4],$t[5]);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
497 my $nb_pairs=$t[6];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
498 $chr1 = "chr".$chr1 unless ($chr1 =~ m/chr/i);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
499 $chr2 = "chr".$chr2 unless ($chr2 =~ m/chr/i);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
500 my $chr_type=($chr1 eq $chr2)? "INTRA":"INTER";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
501
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
502 #if strand filtering
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
503 if (defined $t[16]){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
504 #if inter-chr link
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
505 $sv_type=$t[16];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
506 if(defined $t[17] && $t[17]=~/^(\d+)\/(\d+)$/){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
507 $strand_ratio=floor($1/$2*100)."%";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
508 $score=$t[18];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
509 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
510 if(defined $t[18] && $t[18]=~/^(\d+)\/(\d+)$/){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
511 #if intra-chr link with insert size filtering
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
512 $strand_ratio=floor($1/$2*100)."%";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
513 $link=floor($t[17]);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
514 if($sv_type!~/^INV/){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
515 $insert_ratio=floor($1/$2*100)."%" if($t[19]=~/^(\d+)\/(\d+)$/);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
516 $score=$t[20];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
517 }else{
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
518 $score=$t[19];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
519 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
520 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
521 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
522
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
523 if(defined $t[18] && ($t[18] eq "UNBAL" || $t[18] eq "BAL")){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
524
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
525 #if strand and order filtering only and/or interchr link
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
526 $eq_type=$t[18];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
527 $eq_ratio=floor($1/$2*100)."%" if($t[19]=~/^(\d+)\/(\d+)$/);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
528 ($bk1, $bk2)=($t[20],$t[21]);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
529 foreach my $bk ($bk1, $bk2){$bk=~s/\),\(/ /g; $bk=~s/(\(|\))//g; $bk=~s/,/-/g;}
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
530 $score=$t[22];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
531
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
532 }elsif(defined $t[19] && ($t[19] eq "UNBAL" || $t[19] eq "BAL")){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
533
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
534 #if all three filtering
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
535 $link=floor($t[17]);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
536 $eq_type=$t[19];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
537 $eq_ratio=floor($1/$2*100)."%" if($t[20]=~/^(\d+)\/(\d+)$/);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
538
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
539 if(defined $t[21] && $t[21]=~/^(\d+)\/(\d+)$/){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
540 $insert_ratio=floor($1/$2*100)."%";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
541 ($bk1, $bk2)=($t[22],$t[23]);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
542 $score=$t[24];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
543
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
544 }else{
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
545 ($bk1, $bk2)=($t[21],$t[22]);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
546 $score=$t[23];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
547 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
548 foreach my $bk ($bk1, $bk2){$bk=~s/\),\(/ /g; $bk=~s/(\(|\))//g; $bk=~s/,/-/g;}
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
549
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
550 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
551
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
552
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
553 push(@sv, $chr_type, $sv_type,$eq_type);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
554 push(@sv,"$chr1\t$start1-$end1");
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
555 push(@sv, $link);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
556 push(@sv,"$chr2\t$start2-$end2",
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
557 $nb_pairs,$strand_ratio,$eq_ratio,$insert_ratio, decimal($score,4), $bk1, $bk2);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
558
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
559
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
560 print SV join("\t",@sv)."\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
561 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
562
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
563 close LINKS;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
564 close SV;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
565
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
566 system "sort -k 9,9nr -k 13,13nr $sv_file > $sv_file.sorted";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
567
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
568 open SV, "<".$sv_file.".sorted" or die "$0: can't open in the output: $sv_file".".sorted :$!\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
569 my @links=<SV>;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
570 close SV;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
571
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
572 open SV, ">$sv_file" or die "$0: can't write in the output: $sv_file :$!\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
573
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
574 print SV join("\t",@header)."\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
575 print SV @links;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
576 close SV;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
577
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
578 unlink($sv_file.".sorted");
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
579
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
580 print LOG "-- output created: $sv_file\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
581
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
582 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
583 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
584 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
585 sub deleteBadOrderSensePairs{
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
586
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
587 my (@tab)=@_;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
588 my @tab2;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
589
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
590 foreach my $v (@tab){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
591
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
592 $v=~s/[\(\)]//g;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
593 push(@tab2,$v) if($v!~/[\$\*\@]$/);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
594 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
595 return @tab2;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
596 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
597 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
598 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
599 #gets starts and ends Coords when start=leftmost given positions, directions and orders
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
600 sub getCoordswithLeftMost {
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
601
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
602 my ($starts,$ends,$positions,$strand,$end_order,$tag_length) = @_;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
603
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
604 for my $i (0..scalar(@{$positions})-1) {
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
605
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
606 if($strand->[$i] eq 'F'){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
607 $starts->[$i]=$positions->[$i];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
608 $ends->[$i]=$positions->[$i]+$tag_length->{$end_order->[$i]}-1;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
609 }else{
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
610 $starts->[$i]=$positions->[$i]-$tag_length->{$end_order->[$i]}+1;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
611 $ends->[$i]=$positions->[$i];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
612 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
613 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
614 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
615 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
616 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
617 sub floor {
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
618 my $nb = $_[0];
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
619 $nb=~ s/\..*//;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
620 return $nb;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
621 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
622 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
623 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
624 sub decimal{
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
625
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
626 my $num=shift;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
627 my $digs_to_cut=shift;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
628
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
629 $num=sprintf("%.".($digs_to_cut-1)."f", $num) if ($num=~/\d+\.(\d){$digs_to_cut,}/);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
630
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
631 return $num;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
632 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
633
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
634 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
635 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
636 #Sort links according the concerned chromosomes and their coordinates
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
637 sub sortLinks{
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
638
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
639 my ($links_file,$sortedlinks_file,$unique)=@_;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
640
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
641 print LOG "# Sorting links...\n";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
642
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
643 my $pipe=($unique)? "| sort -u":"";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
644 system "sort -k 1,1 -k 4,4 -k 2,2n -k 5,5n -k 8,8n $links_file $pipe > $sortedlinks_file";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
645
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
646 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
647 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
648 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
649 sub getColor{
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
650
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
651 my($count,$hcolor,$format)=@_;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
652 for my $col ( keys % { $hcolor} ) {
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
653 return $col if($count>=$hcolor->{$col}->[0] && $count<=$hcolor->{$col}->[1]);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
654 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
655 return "white" if($format eq "circos");
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
656 return "255,255,255" if($format eq "bed");
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
657 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
658 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
659 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
660 #check if the configuration file is correct
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
661 sub validateconfiguration{
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
662
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
663 my %conf=%{$_[0]};
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
664 my $list_prgs="@ARGV";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
665
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
666 my @circos_params=qw(organism_id colorcode);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
667 my @bed_params=qw(colorcode);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
668 my @compare_params=qw(list_samples list_read_lengths sample_link_file reference_link_file);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
669
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
670 unless (defined($conf{general}{output_dir})) {
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
671 $conf{general}{output_dir} = ".";
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
672 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
673 unless (-d $conf{general}{output_dir}){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
674 mkdir $conf{general}{output_dir} or die;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
675 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
676 $conf{general}{output_dir}.="/" if($conf{general}{output_dir}!~/\/$/);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
677
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
678
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
679 if($list_prgs=~/links2compare/){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
680 foreach my $p (@compare_params) {
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
681 die("Error Config : The compare parameter \"$p\" is not defined\n") if (!defined $conf{compare}{$p});
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
682 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
683
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
684 unless (defined($conf{compare}{same_sv_type})) {
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
685 $conf{compare}{same_sv_type} = 0;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
686 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
687
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
688 unless (defined($conf{compare}{min_overlap})) {
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
689 $conf{compare}{min_overlap} = 1E-9;
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
690 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
691
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
692 if($conf{compare}{circos_output}){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
693 foreach my $p (@circos_params) {
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
694 next if($list_prgs=~/^ratio/ && $p eq "colorcode");
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
695 die("Error Config : The circos parameter \"$p\" is not defined\n") if (!defined $conf{circos}{$p});
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
696 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
697 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
698 if($conf{compare}{bed_output}){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
699 foreach my $p (@bed_params) {
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
700 die("Error Config : The bed parameter \"$p\" is not defined\n") if (!defined $conf{bed}{$p});
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
701 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
702 die("Error Config : The compare parameter \"list_read_lengths\" is not defined\n") if (!defined $conf{compare}{list_read_lengths});
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
703
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
704 my @samples=split(",",$conf{compare}{list_samples});
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
705 my @read_lengths=split(",",$conf{compare}{list_read_lengths});
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
706 for my $i (0..$#samples){
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
707 my @l=split("-",$read_lengths[$i]);
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
708 $conf{compare}{read_lengths}{$samples[$i]}={ 1=> $l[0], 2=> $l[1]};
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
709 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
710 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
711 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
712
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
713
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
714 }
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
715 #------------------------------------------------------------------------------#
0d10255b5434 Uploaded
scisjnu123
parents:
diff changeset
716 #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#