Repository 'svdetect'
hg clone https://toolshed.g2.bx.psu.edu/repos/bzeitouni/svdetect

Changeset 5:ba8c5e544948 (2012-06-11)
Previous changeset 4:f7a84d31bd83 (2012-06-11) Next changeset 6:f6ccaaed3654 (2012-06-11)
Commit message:
Uploaded
added:
SVDetect_run_parallel.pl
b
diff -r f7a84d31bd83 -r ba8c5e544948 SVDetect_run_parallel.pl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SVDetect_run_parallel.pl Mon Jun 11 12:31:07 2012 -0400
[
b'@@ -0,0 +1,3537 @@\n+#!/usr/bin/perl -w\n+\n+=pod\n+\n+=head1 NAME\n+\n+SVDetect - Program designed to the detection of structural variations\n+from paired-end/mate-pair sequencing data, compatible with SOLiD and Illumina (>=1.3) reads\n+\n+Version: 0.8 for Galaxy\n+\n+=head1 SYNOPSIS\n+\n+SVDetect <command> -conf <configuration_file> [-help] [-man]\n+    \n+    Command:\n+\n+    \tlinking\t\tdetection and isolation of links\n+        filtering\tfiltering of links according different parameters\n+        links2circos\tlinks conversion to circos format\n+\tlinks2bed \tpaired-ends of links converted to bed format (UCSC)\n+\tlinks2SV\tformatted output to show most significant SVs\n+\tcnv\t\tcalculate copy-number profiles\n+\tratio2circos\tratio conversion to circos density format\n+\tratio2bedgraph\tratio conversion to bedGraph density format (UCSC)\n+    \n+=head1 DESCRIPTION\n+\n+This is a command-line interface to SVDetect.\n+\n+\n+=head1 AUTHORS\n+\n+Bruno Zeitouni E<lt>bruno.zeitouni@curie.frE<gt>,\n+Valentina Boeva E<lt>valentina.boeva@curie.frE<gt>\n+\n+=cut\n+\n+# -------------------------------------------------------------------\n+\n+use strict;\n+use warnings;\n+\n+use Pod::Usage;\n+use Getopt::Long;\n+\n+use Config::General;\n+use Tie::IxHash;\n+use FileHandle;\n+use Parallel::ForkManager;\n+\n+#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#\n+#PARSE THE COMMAND LINE\n+my %OPT;\n+GetOptions(\\%OPT,\n+\t   \'conf=s\',\n+\t   \'out1=s\', #GALAXY\n+\t   \'out2=s\', #GALAXY\n+\t   \'out3=s\', #GALAXY\n+\t   \'out4=s\', #GALAXY\n+\t   \'out5=s\', #GALAXY\n+\t   \'l=s\', #GALAXY\n+\t   \'N=s\',#GALAXY\n+\t   \'help\',#GALAXY\n+           \'man\'\n+\t  );\n+\n+pod2usage() if $OPT{help};\n+pod2usage(-verbose=>2) if $OPT{man};\n+pod2usage(-message=> "$!", -exitval => 2) if (!defined $OPT{conf});\n+\n+pod2usage() if(@ARGV<1);\n+\n+tie (my %func, \'Tie::IxHash\',linking=>\\&createlinks,\n+\t\t\t     filtering=>\\&filterlinks,\n+\t\t\t     links2circos=>\\&links2circos,\n+\t\t\t     links2bed=>\\&links2bed,\n+\t\t\t     links2compare=>\\&links2compare,\n+\t\t\t     links2SV=>\\&links2SV,\n+\t\t\t     cnv=>\\&cnv,\n+\t\t\t     ratio2circos=>\\&ratio2circos,\n+\t\t\t     ratio2bedgraph=>\\&ratio2bedgraph);\n+\n+foreach my $command (@ARGV){\n+    pod2usage(-message=> "Unknown command \\"$command\\"", -exitval => 2) if (!defined($func{$command}));\n+}\n+#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#\n+\n+\n+#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#\n+#READ THE CONFIGURATION FILE\n+my $conf=Config::General->new(    -ConfigFile        => $OPT{conf},\n+                                  -Tie => "Tie::IxHash",\n+                                  -AllowMultiOptions => 1,\n+\t\t\t\t  -LowerCaseNames    => 1,\n+\t\t\t\t  -AutoTrue => 1);\n+my %CONF= $conf->getall;\n+validateconfiguration(\\%CONF);\t\t\t\t\t\t\t#validation of the configuration parameters\n+\n+my $SAMTOOLS_BIN_DIR="/bioinfo/local/samtools"; #GALAXY\n+\n+my $pt_log_file=$OPT{l}; #GALAXY\n+my $pt_links_file=$OPT{out1} if($OPT{out1}); #GALAXY\n+my $pt_flinks_file=$OPT{out2} if($OPT{out2}); #GALAXY\n+my $pt_sv_file=$OPT{out3} if($OPT{out3}); #GALAXY\n+my $pt_circos_file=$OPT{out4} if($OPT{out4}); #GALAXY\n+my $pt_bed_file=$OPT{out5} if($OPT{out5}); #GALAXY\n+\n+$CONF{general}{mates_file}=readlink($CONF{general}{mates_file});#GALAXY\n+$CONF{general}{cmap_file}=readlink($CONF{general}{cmap_file});#GALAXY\n+\n+my $log_file=$CONF{general}{output_dir}.$OPT{N}.".svdetect_run.log"; #GALAXY\n+open LOG,">$log_file" or die "$0: can\'t open ".$log_file.":$!\\n";#GALAXY\n+#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#\n+\n+#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#\n+#COMMAND EXECUTION\n+foreach my $command (@ARGV){\n+    &{$func{$command}}();\n+}\n+print LOG "-- end\\n";#GALAXY\n+\n+close LOG;#GALAXY\n+system "rm $pt_log_file ; ln -s $log_file $pt_log_file"; #GALAXY\n+exit'..b'y $chrName (@chrs){\n+\t      \n+\t\tdie("Error Config : The filtering parameter \\"chromosomes\\" is not valid\\n")\n+\t\tif(($chrName!~/^\\-/ && $exclude) || ($chrName=~/^\\-/ && !$exclude));\n+\t\t\n+\t    }\n+\t}\n+\t\n+\tif (( $conf{filtering}{order_filtering} )&& !$conf{filtering}{strand_filtering}) {\n+\t    die("Error Config : The parameter strand_filtering is set to \\"0\\" while order_filtering is selected".\n+\t\t"\\nChange strand_filtering to \\"1\\" if you want to use the order filtering\\n");\n+\t}\n+\tif (( !defined($conf{filtering}{mu_length}) || !defined($conf{filtering}{sigma_length}) )&& $conf{filtering}{order_filtering}) {\n+\t    die("Error Config : You should set parameters \\"mu_length\\" and \\"sigma_length\\" to use order filtering\\n");\n+\t}\n+\tif (( $conf{filtering}{insert_size_filtering} )&& !$conf{filtering}{strand_filtering}) {\n+\t    die("Error Config : The parameter strand_filtering is set to \\"0\\" while insert_size_filtering is selected".\n+\t\t"\\nChange strand_filtering to \\"1\\" if you want to use the insert size filtering\\n");\n+\t}\n+\tif (( !defined($conf{filtering}{mu_length}) || !defined($conf{filtering}{sigma_length}) )&& $conf{filtering}{insert_size_filtering}) {\n+\t    die("Error Config : You should set parameters \\"mu_length\\" and \\"sigma_length\\" to use discriminate insertions from deletions\\n");\n+\t}\n+\t\n+\tif (!defined($conf{filtering}{indel_sigma_threshold})) {\n+\t    $conf{filtering}{indel_sigma_threshold} = 2;\n+\t}\n+\tif (!defined($conf{filtering}{dup_sigma_threshold})) {\n+\t    $conf{filtering}{dup_sigma_threshold} = 2;\n+\t}\n+\tif (!defined($conf{filtering}{singleton_sigma_threshold})) {\n+\t    $conf{filtering}{singleton_sigma_threshold} = 4;\n+\t}\n+\t\n+\tif (!defined($conf{filtering}{nb_pairs_order_threshold})) {\n+\t    $conf{filtering}{nb_pairs_order_threshold} = 1;\n+\t}\n+\t\n+\tif (!defined($conf{filtering}{final_score_threshold})) {\n+\t    $conf{filtering}{final_score_threshold} = 0.8;\n+\t}\n+\t\n+\tif ($conf{filtering}{nb_pairs_order_threshold}>$conf{filtering}{nb_pairs_threshold}) {\n+\t    die("Error Config : Parameter \\"nb_pairs_order_threshold\\" should not exceed \\"nb_pairs_threshold\\"\\n");\n+\t}\n+\t\n+    }\n+    \n+    if($list_prgs=~/2circos$/){\n+\tforeach my $p (@circos_params) {\n+\t    next if($list_prgs=~/^ratio/ && $p eq "colorcode");\n+\t    die("Error Config : The circos parameter \\"$p\\" is not defined\\n") if (!defined $conf{circos}{$p});\n+\t}\n+    }\n+    \n+    if($list_prgs=~/2bed$/){\n+\tforeach my $p (@bed_params) {\n+\t    die("Error Config : The bed parameter \\"$p\\" is not defined\\n") if (!defined $conf{bed}{$p});\n+\t}\n+    }\n+    \n+    if($list_prgs=~/links2compare/){\n+\tforeach my $p (@compare_params) {\n+\t    die("Error Config : The compare parameter \\"$p\\" is not defined\\n") if (!defined $conf{compare}{$p});\n+\t}\n+\t\n+\tunless (defined($conf{compare}{same_sv_type})) {\n+\t    $conf{compare}{same_sv_type} = 0;\n+\t}\n+\t\n+\tunless (defined($conf{compare}{min_overlap})) {\n+\t    $conf{compare}{min_overlap} = 1E-9;\n+\t}\n+\t\n+\tif($conf{compare}{circos_output}){\n+\t    foreach my $p (@circos_params) {\n+\t\tnext if($list_prgs=~/^ratio/ && $p eq "colorcode");\n+\t\tdie("Error Config : The circos parameter \\"$p\\" is not defined\\n") if (!defined $conf{circos}{$p});\n+\t    }\n+\t}\n+\tif($conf{compare}{bed_output}){\n+\t    foreach my $p (@bed_params) {\n+\t\tdie("Error Config : The bed parameter \\"$p\\" is not defined\\n") if (!defined $conf{bed}{$p});\n+\t    }\n+\t    die("Error Config : The compare parameter \\"list_read_lengths\\" is not defined\\n") if (!defined $conf{compare}{list_read_lengths});\n+\n+\t    my @samples=split(",",$conf{compare}{list_samples});\n+\t    my @read_lengths=split(",",$conf{compare}{list_read_lengths});\n+\t    for my $i (0..$#samples){\n+\t\tmy @l=split("-",$read_lengths[$i]);\n+\t\t$conf{compare}{read_lengths}{$samples[$i]}={ 1=> $l[0], 2=> $l[1]};\n+\t    }\n+\t}\n+    }\n+   \n+    \n+}\n+#------------------------------------------------------------------------------#\n+#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#\n'