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

1.64 2009/04/29 23:24:09 mikep
add tagAligns as bigbed becuase they are too big to load to mysql
Index: src/hg/encode/encodeLoad/doEncodeLoad.pl
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/encode/encodeLoad/doEncodeLoad.pl,v
retrieving revision 1.63
retrieving revision 1.64
diff -b -B -U 4 -r1.63 -r1.64
--- src/hg/encode/encodeLoad/doEncodeLoad.pl	24 Apr 2009 02:17:18 -0000	1.63
+++ src/hg/encode/encodeLoad/doEncodeLoad.pl	29 Apr 2009 23:24:09 -0000	1.64
@@ -237,8 +237,53 @@
     # XXXX special case narrowPeak/broadPeak/gappedPeak to convert "." => "" in name column?
     push(@{$pushQ->{TABLES}}, $tableName);
 }
 
+
+sub loadBigBed
+{
+# Load bigBed using a .as file
+    my ($assembly, $tableName, $fileList, $sqlTable, $pushQ) = @_;
+    HgAutomate::verbose(2, "loadBigBed ($assembly, $tableName, $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 (scalar(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 ${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");
+        } else {
+            print "$fileList created as bigBed ${tableName}.bb\n";
+        }
+	# symlink bigBed binary file into gbdb bbi directory
+        @cmds = ( "ln -sf ${tableName}.bb /gbdb/${assembly}/bbi/");
+        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 symbolic link to gbdb bigBed directory:\n" . $safe->stderr() . "\n");
+        } else {
+            print "$fileList loaded into $tableName\n";
+        }
+	# create BigBed link table from trackDb to gbdb bigBed binary file
+        @cmds = ( "/cluster/bin/x86_64/hgBbiDbLink $assembly $tableName /gbdb/${assembly}/bbi/${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 bed load:\n" . $safe->stderr() . "\n");
+        } else {
+            print "$fileList loaded into $tableName\n";
+        }
+    }
+    push(@{$pushQ->{TABLES}}, $tableName);
+}
+
 ############################################################################
 # Main
 
 my $wd = cwd();
@@ -379,11 +424,13 @@
     my $files = $h->{files};
     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 $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");
     if ($downloadOnly) {
         # XXXX convert solexa/illumina => sanger fastq when appropriate
         HgAutomate::verbose(3, "Download only; dont load [$key].\n");
         $hgdownload = 1;
@@ -402,8 +449,11 @@
         loadWig($assembly, $tablename, $files, $pushQ);
     } elsif ($extendedTypes{$type}) {
         loadBedFromSchema($assembly, $tablename, $files, $type, $pushQ);
         $hgdownload = @files;
+    } elsif ($bigBedTypes{$type}) {
+        loadBigBed($assembly, $tablename, $files, $type, $pushQ);
+        $hgdownload = @files;
     } elsif ($type =~ /^bed (3|4|5|6|8|9|12)$/) {
         loadBed($assembly, $tablename, $files, $pushQ);
         $hgdownload = @files;
     } elsif ($type =~ /^bedGraph (4)$/) {