Tasks functionality added. Lots of cleanup to do, but a good start. It remains to...
authorTim Reddy Tim <treddy@hudsonalpha.org>
Thu, 21 Aug 2008 00:47:41 +0000 (00:47 +0000)
committerTim Reddy Tim <treddy@hudsonalpha.org>
Thu, 21 Aug 2008 00:47:41 +0000 (00:47 +0000)
htswanalysis/scripts/ConfigureTasks.pm
htswanalysis/scripts/analys_track_comm.py
htswanalysis/scripts/analys_track_main.py

index 92740e185a1ec52bd2b39f14adb427fc9b240f30..bf7b5e00655dd303b35fed0fb96315fd6c26882f 100755 (executable)
@@ -46,11 +46,11 @@ my $SUMMARIZE_PROJECT="$root_dir/scripts/SummarizeProject2.pm";
 ###
 ### Important: get the xml file form the server.
 ###
-getProjectsXML($parm);
+my $projects_file = getProjectsXML($parm);
 
 my $xmldoc = XML::Simple->new();
 
-my $xmlfile = "Projects.xml";
+my $xmlfile = $projects_file;
 my $xml = $xmldoc->XMLin($xmlfile, ForceArray => ['Project','ComparePeakCalls','CompareLibraries','PeakCalling','ProfileReads','qPCR','MotifFinding'], KeepRoot=>1);
 
 my $projects = "";
@@ -80,7 +80,7 @@ print STDERR "writing tasks\n";
 
 open(MAKE,">$data_dir/Projects/TaskMakefile");
 print MAKE "all: $unique_task_dirs\n\n.PHONY: $unique_task_dirs\n\n";
-for(split(/ /,$unique_tasks)) { print MAKE "../Tasks/$_:\n\t".'if ! $(MAKE) -C $@; then $root_dir/scripts/analys_track_main.py updsts '.$_.' "Error"; fi;'."\n\n"; }
+for(split(/ /,$unique_tasks)) { print MAKE "../Tasks/$_:\n\t".'if ! $(MAKE) -C $@; then '.$root_dir.'/scripts/analys_track_main.py updsts '.$_.' "Error"; fi;'."\n\n"; }
 close(MAKE);
 
 print STDERR "Task makefile complete\n";
@@ -94,7 +94,7 @@ close(MAKE);
 
 print STDERR "Project makefile compete. Starting to build tasks\n";
 
-##`make -j 2 -f TaskMakefile > make_tasks.log 2> make_tasks.err`;
+`make -j 4 -f TaskMakefile > make_tasks.log 2> make_tasks.err`;
 
 sub writeProject {
   my $project = shift;
@@ -120,7 +120,7 @@ sub writeProject {
 
   print STDERR "Created directory $projectdir\n";
 
-  $xmldoc->XMLout($project, OutputFile=>"$data_dir/Projects/Project.xml", RootName=>"Project", XMLDecl=>1);
+  $xmldoc->XMLout($project, OutputFile=>"$data_dir/Projects/$projectid/Project.xml", RootName=>"Project", XMLDecl=>1);
 
   print STDERR "Wrote configureation for project $projectdir\n";
 
@@ -201,8 +201,8 @@ sub WriteProfileTasks {
       $cmds .= "\t$seqcheck\n";
       $cmds .= "\t".$PROFILEDIR.'/profile_reads_wig ~Data/Libraries/'.$lib.'.txt "'.$name.'" "'.$name.'" | gzip > '.$lib.'.wig.gz';
       $cmds .= "\n\n";
-      $cmds .= $lib.'.profile.gif: ~Data/Libraries/'.$lib.'.txt $root_dir/scripts/profile_reads/'.$genome.'_tx_start_sites'."\n";
-      $cmds .= "\t".$PROFILEDIR.'/profile_reads_against_features $^ | $root_dir/scripts/profile_to_svg.pm | /opt/local/bin/convert - $@'."\n";
+      $cmds .= $lib.'.profile.gif: ~Data/Libraries/'.$lib.'.txt '.$root_dir.'/reference_data/'.$genome.'_tx_start_sites'."\n";
+      $cmds .= "\t".$PROFILEDIR.'/profile_reads_against_features $^ | '.$root_dir.'/scripts/profile_to_svg.pm | /opt/local/bin/convert - $@'."\n";
       $cmds .= "\n";
 
       writeTask($profile, "ProfileReads",  $outfile, $cmds);
@@ -315,7 +315,7 @@ sub WritePeakCallingTasks {
         $cmd   .= "\t$seqcheck\n";
        $cmd   .= "\trm -f background_RX_noIP.align.txt\n";
         $cmd   .= "\trm -f pseudo_ChIP_RX_noIP.align.txt\n";
-        $cmd   .= "\t".$QUESTDIR.'/generate_QuEST_parameters.pl -rp '.$GENOMEDIR.'/QuEST_'.$genome.' -solexa_align_ChIP ~Data/Libraries/'.$signal.'.txt -solexa_align_RX_noIP ~Data/Libraries/'.$bg.'.txt -ap ./ -silent > '.$name.'.QuEST.log;'."\n";
+        $cmd   .= "\t".$QUESTDIR.'/generate_QuEST_parameters.pl -rp '.$GENOMEDIR.'/QuEST_'.$genome.' -solexa_align_ChIP ~Data/Libraries/'.$signal.'.txt -solexa_align_RX_noIP ~Data/Libraries/'.$bg.'.txt -ap '.$data_dir.'/Tasks/'.$task.' -silent > '.$name.'.QuEST.log;'."\n";
         $cmd   .= "\t".$QUESTDIR.'/run_QuEST_with_param_file.pl -p QuEST.batch.pars >> '.$name.'.QuEST.log;'."\n";
         $cmd   .= "\t".'rm -rf scores;'."\n\n"; 
 
@@ -326,7 +326,7 @@ sub WritePeakCallingTasks {
         $cmd .= "\t$root_dir/scripts/QuEST_2_BED.pm \$< $name\n";
  
         $cmd .= "peak_caller.ChIP.out.fasta: peak_caller.ChIP.out.tab\n";
-        $cmd .= "\t".'cat $< | $root_dir/scripts/extract_peaks.pm $root_dir/reference_data/hg18_chrom_list.txt > $@'."\n";
+        $cmd .= "\t".'cat $< | '.$root_dir.'/scripts/extract_peaks.pm '.$root_dir.'/reference_data/hg18_chrom_list.txt > $@'."\n";
 
       } elsif($caller eq "WingPeaks") {  
         $outfile .= "$name.peaks $name.peaks.fasta ";
@@ -338,14 +338,14 @@ sub WritePeakCallingTasks {
         $cmd .= "\t".'cat $< | awk \'{ print $$1"\t"$$2"\t"$$3"\t"$$4"\t"$$7}\' > $@'."\n\n";
   
         $cmd .= "%.peaks.fasta: %.peaks.tab\n";
-        $cmd .= "\t".'cat $< | $root_dir/scripts/extract_peaks.pm $root_dir/reference_data/hg18_chrom_list.txt > $@'."\n\n";
+        $cmd .= "\t".'cat $< | '.$root_dir.'/scripts/extract_peaks.pm '.$root_dir.'/reference_data/hg18_chrom_list.txt > $@'."\n\n";
       } elsif($caller eq "MACS") {
         $outfile .= $name."_peaks.bed ".$name."_peaks.fasta ";
 
         $cmd .= $name."_peaks.bed: ~Data/Libraries/$signal.txt ~Data/Libraries/$bg.txt\n";
         $cmd .= "\t$seqcheck\n";
-        $cmd .= "\tcat ~Data/Libraries/$signal.txt | $MACSDIR/align_to_bed.pm > $signal.bed\n";
-        $cmd .= "\tcat ~Data/Libraries/$bg.txt | $MACSDIR/align_to_bed.pm > $bg.bed\n";
+        $cmd .= "\tcat ~Data/Libraries/$signal.txt | $root_dir/scripts/align_to_bed.pm > $signal.bed\n";
+        $cmd .= "\tcat ~Data/Libraries/$bg.txt | $root_dir/scripts/align_to_bed.pm > $bg.bed\n";
         $cmd .= "\t$MACSDIR/macs -t $signal.bed -c ./$bg.bed --name=$name --pvalue=1e-10 > $name.log 2> $name.err\n";
         $cmd .= "\t".'echo "track name="'.$name.'" description="'.$name.'"GR_EtOH_Rep2_Peak_Calls" > header';
         $cmd .= "\t".'cat header '.$name.'_peaks.bed > t; mv t '.$name.'_peaks.bed'."\n"; 
@@ -356,7 +356,7 @@ sub WritePeakCallingTasks {
         $cmd .= "\t".'cat $< | awk \'{print NR"\t"$$1"\t"$$2"\t"$$3"\t1"}\' > $@'."\n\n";
 
         $cmd .= "%_peaks.fasta: %_peaks.tab\n";
-        $cmd .= "\t".'cat $< | $root_dir/scripts/extract_peaks.pm $root_dir/reference_data/hg18_chrom_list.txt > $@'."\n\n";
+        $cmd .= "\t".'cat $< | '.$root_dir.'/scripts/extract_peaks.pm '.$root_dir.'/reference_data/hg18_chrom_list.txt > $@'."\n\n";
       }
 
       writeTask($peakcall, "PeakCalling", $outfile, $cmd);
@@ -419,7 +419,10 @@ sub WriteComparePeakCallingTasks {
   
 sub getProjectsXML {
   my $option = shift;
+  my $dir= "$data_dir/Projects";
+  my $filename = "$dir/Projects.xml";
   if(!defined($option)) { $option = ""; }
-  `$root_dir/scripts/analys_track_main.py getProjects $option`;
-  `cat Projects.xml | sed -e "s/\&/_and_/" > t; mv t Projects.xml`;
+  `$root_dir/scripts/analys_track_main.py getProjects $option $dir`;
+  `cat $filename | sed -e "s/\&/_and_/" > t; mv t $filename`;
+  return $filename;
 }
index 4fa0a3e3be82287733ebda8639b7c3e5fa4ec3f7..7598d54a5a4b8470ad6614c7af434cd59c072d29 100755 (executable)
@@ -11,7 +11,7 @@ def getWebPage(url,params):
   wpage.close()
   return restext
 
-def getProjects(mode):
+def getProjects(mode,folder):
   varStatus = 'getting projects with newly defined tasks'
   url = 'http://myerslab.stanford.edu/analys_track/getProjects' 
 
@@ -23,7 +23,6 @@ def getProjects(mode):
   match_str = re.compile('^<\?xml.+$')
   if match_str.search(tempstr):
     # create file in curret folder                                                                                                 
-    folder = './'
     file_path = os.path.join(folder,'Projects.xml')
     f = open(file_path, 'w')
     f.write(readw)
index 7d450a0625c273494cf4a39be86177b5840e72c0..9ab255594a4e830c7cfce43a5f900efaa2674f77 100755 (executable)
@@ -17,9 +17,9 @@ if __name__ == "__main__":
     if sys.argv[1] == 'getProjects':
       print "\nRequesting projects list"
       if (len(sys.argv) >2 and sys.argv[2]=='all'):
-        print "\nAnalys Track server reply: "+getProjects('all')
+        print "\nAnalys Track server reply: "+getProjects('all',sys.argv[3])
       else:
-        print "\nAnalys Track server reply: "+getProjects('new')
+        print "\nAnalys Track server reply: "+getProjects('new',sys.argv[3])
     else:
       if sys.argv[1] == 'updsts':
         if len(sys.argv) >= 3: