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)$/) {