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