src/hg/encode/encodeLoad/doEncodeLoad.pl 1.75

1.75 2010/03/25 00:00:09 braney
add bigWig
Index: src/hg/encode/encodeLoad/doEncodeLoad.pl
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/encode/encodeLoad/doEncodeLoad.pl,v
retrieving revision 1.74
retrieving revision 1.75
diff -b -B -U 4 -r1.74 -r1.75
--- src/hg/encode/encodeLoad/doEncodeLoad.pl	24 Mar 2010 18:08:00 -0000	1.74
+++ src/hg/encode/encodeLoad/doEncodeLoad.pl	25 Mar 2010 00:00:09 -0000	1.75
@@ -253,9 +253,9 @@
         if ((() = split(" ", $fileList)) != 1) { 
 	    die "BigBed must be loaded with a single file but a list of files was supplied ($fileList)\n";
 	}
 	# Create bigBed binary file
-        my @cmds = ( "/cluster/bin/x86_64/bedToBigBed -as=$Encode::sqlCreate/${sqlTable}.as $fileList $configPath/${assembly}_chromInfo.txt ${gbdbDir}/${tableName}.bb");
+        my @cmds = ( "mkdir -p sortTmp; sort  -k1,1 -k2,2n $fileList > sortTmp/loadTmp.bed; /cluster/bin/x86_64/bedToBigBed -as=$Encode::sqlCreate/${sqlTable}.as sortTmp/loadTmp.bed $configPath/${assembly}_chromInfo.txt ${gbdbDir}/${tableName}.bb");
         HgAutomate::verbose(2, "loadBigBed cmds [".join(" ; ",@cmds)."]\n");
         my $safe = SafePipe->new(CMDS => \@cmds, STDOUT => "/dev/null", DEBUG => $opt_verbose > 2);
         if(my $err = $safe->exec()) {
             die("ERROR: File(s) '$fileList' failed bedToBigBed:\n" . $safe->stderr() . "\n");
@@ -283,8 +283,52 @@
     }
     push(@{$pushQ->{TABLES}}, $tableName);
 }
 
+sub loadBigWig
+{
+# Load bigWig
+    my ($assembly, $tableName, $gbdbDir, $fileList, $sqlTable, $pushQ, $configPath) = @_;
+    HgAutomate::verbose(2, "loadBigWig ($assembly, $tableName, $gbdbDir, $fileList, $sqlTable, $pushQ)\n");
+
+    if(!$opt_skipLoad) {
+#        if(!(-e "$Encode::sqlCreate/${sqlTable}.as")) {
+#            die "AutoSql schema '$Encode::sqlCreate/${sqlTable}.as' does not exist\n";
+#        }
+        if ((() = split(" ", $fileList)) != 1) { 
+	    die "BigWig must be loaded with a single file but a list of files was supplied ($fileList)\n";
+	}
+	# link bigWig binary file to gbdbDir
+        my @cmds = ( "mkdir -p ${gbdbDir}; ln  $fileList ${gbdbDir}/${tableName}.bw");
+        HgAutomate::verbose(2, "loadBigWig cmds [".join(" ; ",@cmds)."]\n");
+        my $safe = SafePipe->new(CMDS => \@cmds, STDOUT => "/dev/null", DEBUG => $opt_verbose > 2);
+        if(my $err = $safe->exec()) {
+            die("ERROR: bad link of '$fileList' to ${gbdbDir}\n" . $safe->stderr() . "\n");
+        } else {
+            HgAutomate::verbose(2, "$fileList linked to ${gbdbDir}/${tableName}.bw\n");
+        }
+	# symlink bigWig binary file into gbdb bbi directory
+        @cmds = ( "ln -sf ${gbdbDir}/${tableName}.bw /gbdb/${assembly}/bbi/");
+        HgAutomate::verbose(2, "loadBigWig cmds [".join(" ; ",@cmds)."]\n");
+        $safe = SafePipe->new(CMDS => \@cmds, STDOUT => "/dev/null", DEBUG => $opt_verbose > 2);
+        if(my $err = $safe->exec()) {
+            die("ERROR: File(s) '$fileList' failed symbolic link to /gbdb/${assembly}/bbi/\n" . $safe->stderr() . "\n");
+        } else {
+            HgAutomate::verbose(2, "${gbdbDir}/${tableName}.bw linked to  /gbdb/${assembly}/bbi/\n");
+        }
+	# create BigWig link table from trackDb to gbdb bigWig binary file
+        @cmds = ( "/cluster/bin/x86_64/hgBbiDbLink $assembly $tableName /gbdb/${assembly}/bbi/${tableName}.bw");
+        HgAutomate::verbose(2, "loadBigBed cmds [".join(" ; ",@cmds)."]\n");
+        $safe = SafePipe->new(CMDS => \@cmds, STDOUT => "/dev/null", DEBUG => $opt_verbose > 2);
+        if(my $err = $safe->exec()) {
+            die("ERROR: File(s) '$fileList' failed bigWig load:\n" . $safe->stderr() . "\n");
+        } else {
+            print "$fileList loaded into $tableName\n";
+        }
+    }
+    push(@{$pushQ->{TABLES}}, $tableName);
+}
+
 ############################################################################
 # Main
 
 my $wd = cwd();
@@ -434,8 +478,9 @@
     my $downloadOnly = (defined($h->{downloadOnly}) and $h->{downloadOnly});  # Could also gzip and link files for displayed tracks!
     my @files = split(/\s+/, $files);
     my %extendedTypes = map { $_ => 1 } @Encode::extendedTypes;
     my %bigBedTypes = map { $_ => 1 } @Encode::bigBedTypes;
+    my %bigWigTypes = map { $_ => 1 } @Encode::bigWigTypes;
     my $hgdownload = 0;
 
     HgAutomate::verbose(2, "TYPE=[$type] extendedTypes=[".(defined($extendedTypes{$type}) ? $extendedTypes{$type} : "")."] key=[$key] tablename=[$tablename] downloadOnly=[$downloadOnly]\n");
     HgAutomate::verbose(2, "TYPE=[$type] bigBedTypes=[".(defined($bigBedTypes{$type}) ? $bigBedTypes{$type} : "")."] key=[$key] tablename=[$tablename] downloadOnly=[$downloadOnly]\n");
@@ -462,8 +507,11 @@
         $hgdownload = @files;
     } elsif ($type =~ /^bed/ and defined($sql)) {
         loadBedFromSchema($assembly, $tablename, $files, $sql, $pushQ);
         $hgdownload = @files;
+    } elsif ($bigWigTypes{$type}) {
+        loadBigWig($assembly, $tablename, $gbdbDir, $files, $type, $pushQ, $configPath);
+        $hgdownload = @files;
     } elsif ($bigBedTypes{$type}) {
         loadBigBed($assembly, $tablename, $gbdbDir, $files, $type, $pushQ, $configPath);
         $hgdownload = @files;
     } elsif ($type =~ /^bed (3|4|5|6|8|9|12)$/) {