4687e86792555ca063ea6d90d67adb7d583551d6 hiram Thu May 2 11:45:57 2024 -0700 now with correct common name diff --git src/hg/utils/automation/asmHubChainNetTrackDb.pl src/hg/utils/automation/asmHubChainNetTrackDb.pl index 9c17495..d6ee472 100755 --- src/hg/utils/automation/asmHubChainNetTrackDb.pl +++ src/hg/utils/automation/asmHubChainNetTrackDb.pl @@ -14,54 +14,88 @@ printf STDERR "and basename(buildDir) is the 'target' sequence name\n"; exit 255; } my $argc = scalar(@ARGV); if ($argc != 1) { usage; } my $buildDir = shift; my $targetDb = basename($buildDir); my @tParts = split('_', $targetDb); my $targetAccession = "$tParts[0]_$tParts[1]"; my @queryList; +my %queryPrio; # key is queryDb, value is featureBits on chain file +my %commonName; # key is queryDb, value is common name + +open (my $CN, "-|", "hgsql -N -e 'select gcAccession,commonName from genark;' hgcentraltest") or die "can not hgsql -N -e 'select gcAccession,commonName from genark;'"; +while (my $line = <$CN>) { + chomp $line; + my ($gcX, $comName) = split('\t', $line); + $comName =~ s/\s\(.*//; + $commonName{$gcX} = $comName; +} +close ($CN); + +open ($CN, "-|", "hgsql -N -e 'select name,organism from dbDb;' hgcentraltest") or die "can not hgsql -N -e 'select name,organism from dbDb;'"; +while (my $line = <$CN>) { + chomp $line; + my ($gcX, $comName) = split('\t', $line); + $comName =~ s/\s\(.*//; + $commonName{$gcX} = "$comName/${gcX}"; +} +close ($CN); `mkdir -p $buildDir/bbi`; `mkdir -p $buildDir/liftOver`; open (DL, "ls -d $buildDir/trackData/lastz.*|") or die "can not list $buildDir/trackData/lastz.*"; while (my $lastzDir =
) { chomp $lastzDir; my $queryDb = basename($lastzDir); $queryDb =~ s/lastz.//; - push @queryList, $queryDb; + my $Qdb = ucfirst($queryDb); +# push @queryList, $queryDb; + $queryPrio{$queryDb} = 100; + my $fbTxt = `ls $buildDir/trackData/lastz.${queryDb}/fb.${targetAccession}.chain${Qdb}Link.txt 2> /dev/null`; + chomp $fbTxt; + if (-s "${fbTxt}") { + my $prio = `cut -d' ' -f5 $fbTxt | tr -d '()%'`; + chomp $prio; +# $queryPrio{$queryDb} = sprintf("%d", int((100 - $prio)+0.5)); + $queryPrio{$queryDb} = sprintf("%.3f", 100 - $prio); + } } close (DL); +foreach my $qDb ( sort {$queryPrio{$a} <=> $queryPrio{$b}} keys %queryPrio) { + push @queryList, $qDb; +} + # foreach my $queryDb (@queryList) { # printf STDERR "%s vs. %s\n", $queryDb, $targetDb; # } ##### begin trackDb output ###### printf "track %sChainNet\n", $targetDb; printf "compositeTrack on shortLabel Chain/Net longLabel Chain and Net alignments to target sequence: %s\n", $targetDb; printf "subGroup1 view Views chain=Chains net=Nets synten=Syntenic rbest=Reciprocal_best liftover=Lift_over\n"; -printf "subGroup2 species Species"; +printf "subGroup2 species Assembly"; my $N = 0; foreach my $queryDb (@queryList) { printf " s%03d=%s", $N++, $queryDb; } printf "\n"; printf "subGroup3 clade Clade c00=human\n"; printf "dragAndDrop subTracks\n"; printf "visibility hide group compGeno color 0,0,0 altColor 255,255,0 type bed 3 chainLinearGap loose chainMinScore 5000 dimensions dimensionX=clade dimensionY=species @@ -88,232 +122,234 @@ shortLabel Reciprocal best view rbest visibility pack subTrack %sChainNet spectrum on track %sChainNetViewLiftOver shortLabel Lift over view liftover visibility pack subTrack %sChainNet spectrum on ", $targetDb, $targetDb, $targetDb, $targetDb, $targetDb, $targetDb, $targetDb, $targetDb; $N = 0; -my $chainNetPriority = 1; foreach my $queryDb (@queryList) { + my $comName = $queryDb; + $comName = $commonName{$queryDb} if (defined($commonName{$queryDb})); my $QueryDb = ucfirst($queryDb); my $overChain="${targetAccession}.${queryDb}.over.chain.gz"; my $overToChain="${targetAccession}To${QueryDb}.over.chain.gz"; my $lastzDir="lastz.$queryDb"; `rm -f $buildDir/bbi/$targetDb.chain${QueryDb}.bb`; `rm -f $buildDir/bbi/$targetDb.chain${QueryDb}Link.bb`; `rm -f $buildDir/liftOver/${overToChain}`; if ( -s "$buildDir/trackData/$lastzDir/axtChain/${overChain}" ) { `ln -s ../trackData/$lastzDir/axtChain/${overChain} $buildDir/liftOver/${overToChain}`; } else { printf STDERR "# NOT FOUND: '%s'\n", "$buildDir/trackData/$lastzDir/axtChain/${overChain}"; } `ln -s ../trackData/lastz.$queryDb/axtChain/chain${QueryDb}.bb $buildDir/bbi/$targetDb.chain${QueryDb}.bb`; `ln -s ../trackData/lastz.$queryDb/axtChain/chain${QueryDb}Link.bb $buildDir/bbi/$targetDb.chain${QueryDb}Link.bb`; my $queryDate = "some date"; my $queryAsmName = ""; if ( $queryDb !~ m/^GC/ ) { $queryDate = `hgsql -N -e 'select description from dbDb where name="$queryDb"' hgcentraltest | sed -e 's/ (.*//;'`; chomp $queryDate; } else { ($queryDate, $queryAsmName) = &HgAutomate::hubDateName($queryDb); } printf " track chain%s subTrack %sChainNetViewchain off subGroups view=chain species=s%03d clade=c00 shortLabel %s Chain - longLabel %s%s (%s) Chained Alignments + longLabel %s/%s%s (%s) Chained Alignments type bigChain %s bigDataUrl bbi/%s.chain%s.bb linkDataUrl bbi/%s.chain%sLink.bb otherDb %s html html/%s.chainNet - priority %d -", $QueryDb, $targetDb, $N, $queryDb, $queryDb, $queryAsmName, $queryDate, $queryDb, $targetDb, - $QueryDb, $targetDb, $QueryDb, $queryDb, $targetDb, $chainNetPriority++; + priority %s +", $QueryDb, $targetDb, $N, $comName, $comName, $queryDb, $queryAsmName, $queryDate, $queryDb, $targetDb, + $QueryDb, $targetDb, $QueryDb, $queryDb, $targetDb, $queryPrio{$queryDb}; if ( -s "$buildDir/trackData/lastz.$queryDb/axtChain/chainSyn${QueryDb}.bb" ) { `rm -f $buildDir/bbi/$targetDb.chainSyn${QueryDb}.bb`; `rm -f $buildDir/bbi/$targetDb.chainSyn${QueryDb}Link.bb`; `ln -s ../trackData/lastz.$queryDb/axtChain/chainSyn${QueryDb}.bb $buildDir/bbi/$targetDb.chainSyn${QueryDb}.bb`; `ln -s ../trackData/lastz.$queryDb/axtChain/chainSyn${QueryDb}Link.bb $buildDir/bbi/$targetDb.chainSyn${QueryDb}Link.bb`; printf " track chainSyn%s subTrack %sChainNetViewSynTen off subGroups view=synten species=s%03d clade=c00 shortLabel %s synChain - longLabel %s%s (%s) Syntenic Chained Alignments + longLabel %s/%s%s (%s) Chained Alignments type bigChain %s bigDataUrl bbi/%s.chainSyn%s.bb linkDataUrl bbi/%s.chainSyn%sLink.bb otherDb %s html html/%s.chainNet - priority %d -", $QueryDb, $targetDb, $N, $queryDb, $queryDb, $queryAsmName, $queryDate, $queryDb, $targetDb, - $QueryDb, $targetDb, $QueryDb, $queryDb, $targetDb, $chainNetPriority++; + priority %s +", $QueryDb, $targetDb, $N, $comName, $comName, $queryDb, $queryAsmName, $queryDate, $queryDb, $targetDb, + $QueryDb, $targetDb, $QueryDb, $queryDb, $targetDb, $queryPrio{$queryDb}; } if ( -s "$buildDir/trackData/lastz.$queryDb/axtChain/chainRBest${QueryDb}.bb" ) { `rm -f $buildDir/bbi/$targetDb.chainRBest${QueryDb}.bb`; `rm -f $buildDir/bbi/$targetDb.chainRBest${QueryDb}Link.bb`; `ln -s ../trackData/lastz.$queryDb/axtChain/chainRBest${QueryDb}.bb $buildDir/bbi/$targetDb.chainRBest${QueryDb}.bb`; `ln -s ../trackData/lastz.$queryDb/axtChain/chainRBest${QueryDb}Link.bb $buildDir/bbi/$targetDb.chainRBest${QueryDb}Link.bb`; printf " track chainRBest%s subTrack %sChainNetViewRBest off subGroups view=rbest species=s%03d clade=c00 shortLabel %s rbChain - longLabel %s%s (%s) Reciprocal Best Chained Alignments + longLabel %s/%s%s (%s) Chained Alignments type bigChain %s bigDataUrl bbi/%s.chainRBest%s.bb linkDataUrl bbi/%s.chainRBest%sLink.bb otherDb %s html html/%s.chainNet - priority %d -", $QueryDb, $targetDb, $N, $queryDb, $queryDb, $queryAsmName, $queryDate, $queryDb, $targetDb, - $QueryDb, $targetDb, $QueryDb, $queryDb, $targetDb, $chainNetPriority++; + priority %s +", $QueryDb, $targetDb, $N, $comName, $comName, $queryDb, $queryAsmName, $queryDate, $queryDb, $targetDb, + $QueryDb, $targetDb, $QueryDb, $queryDb, $targetDb, $queryPrio{$queryDb}; } if ( -s "$buildDir/trackData/lastz.$queryDb/axtChain/chainLiftOver${QueryDb}.bb" ) { `rm -f $buildDir/bbi/$targetDb.chainLiftOver${QueryDb}.bb`; `rm -f $buildDir/bbi/$targetDb.chainLiftOver${QueryDb}Link.bb`; `ln -s ../trackData/lastz.$queryDb/axtChain/chainLiftOver${QueryDb}.bb $buildDir/bbi/$targetDb.chainLiftOver${QueryDb}.bb`; `ln -s ../trackData/lastz.$queryDb/axtChain/chainLiftOver${QueryDb}Link.bb $buildDir/bbi/$targetDb.chainLiftOver${QueryDb}Link.bb`; printf " track chainLiftOver%s subTrack %sChainNetViewLiftOver off subGroups view=liftover species=s%03d clade=c00 shortLabel %s loChain - longLabel %s%s (%s) Lift Over Chained Alignments + longLabel %s/%s%s (%s) Chained Alignments type bigChain %s bigDataUrl bbi/%s.chainLiftOver%s.bb linkDataUrl bbi/%s.chainLiftOver%sLink.bb otherDb %s html html/%s.chainNet - priority %d -", $QueryDb, $targetDb, $N, $queryDb, $queryDb, $queryAsmName, $queryDate, $queryDb, $targetDb, - $QueryDb, $targetDb, $QueryDb, $queryDb, $targetDb, $chainNetPriority++; + priority %s +", $QueryDb, $targetDb, $N, $comName, $comName, $queryDb, $queryAsmName, $queryDate, $queryDb, $targetDb, + $QueryDb, $targetDb, $QueryDb, $queryDb, $targetDb, $queryPrio{$queryDb}; } $N++; } printf " track %sMafNetViewnet shortLabel Nets view net visibility dense subTrack %sChainNet ", $targetDb, $targetDb; $N = 0; -$chainNetPriority = 1; foreach my $queryDb (@queryList) { + my $comName = $queryDb; + $comName = $commonName{$queryDb} if (defined($commonName{$queryDb})); my @targetAccession = split('_', $targetDb); my $targetAcc = sprintf("%s_%s", $targetAccession[0], $targetAccession[1]); my $QueryDb = ucfirst($queryDb); my $queryDate = "some date"; my $queryAsmName = ""; `rm -f $buildDir/bbi/$targetDb.${queryDb}.net.bb`; `rm -f $buildDir/bbi/$targetDb.${queryDb}.net.summary.bb`; if ( -s "../trackData/lastz.$queryDb/bigMaf/${targetAcc}.${queryDb}.net.bb" ) { `ln -s ../trackData/lastz.$queryDb/bigMaf/${targetAcc}.${queryDb}.net.bb $buildDir/bbi/$targetDb.${queryDb}.net.bb`; `ln -s ../trackData/lastz.$queryDb/bigMaf/${targetAcc}.${queryDb}.net.summary.bb $buildDir/bbi/$targetDb.${queryDb}.net.summary.bb`; if ( $queryDb !~ m/^GC/ ) { $queryDate = `hgsql -N -e 'select description from dbDb where name="$queryDb"' hgcentraltest | sed -e 's/ (.*//;'`; chomp $queryDate; } else { ($queryDate, $queryAsmName) = &HgAutomate::hubDateName($queryDb); } printf " track net%s parent %sMafNetViewnet subGroups view=net species=s%03d clade=c00 shortLabel %s mafNet - longLabel %s%s (%s) mafNet Alignment + longLabel %s/%s%s (%s) Chained Alignments type bigMaf bigDataUrl bbi/%s.%s.net.bb summary bbi/%s.%s.net.summary.bb speciesOrder %s html html/%s.chainNet - priority %d -", $QueryDb, $targetDb, $N, $queryDb, $queryDb, $queryAsmName, $queryDate, $targetDb, $queryDb, $targetDb, $queryDb, $queryDb, $targetDb, $chainNetPriority++; + priority %s +", $QueryDb, $targetDb, $N, $comName, $comName, $queryDb, $queryAsmName, $queryDate, $targetDb, $queryDb, $targetDb, $queryDb, $queryDb, $targetDb, $queryPrio{$queryDb}; } `rm -f $buildDir/bbi/$targetDb.${queryDb}.synNet.bb`; `rm -f $buildDir/bbi/$targetDb.${queryDb}.synNet.summary.bb`; if ( -s "$buildDir/trackData/lastz.$queryDb/bigMaf/${targetAcc}.${queryDb}.synNet.bb" ) { `ln -s ../trackData/lastz.$queryDb/bigMaf/${targetAcc}.${queryDb}.synNet.bb $buildDir/bbi/$targetDb.${queryDb}.synNet.bb`; `ln -s ../trackData/lastz.$queryDb/bigMaf/${targetAcc}.${queryDb}.synNet.summary.bb $buildDir/bbi/$targetDb.${queryDb}.synNet.summary.bb`; printf " track synNet%s parent %sMafNetViewnet subGroups view=net species=s%03d clade=c00 shortLabel %s synNet - longLabel %s%s (%s) Syntenic Net Alignment + longLabel %s/%s%s (%s) Chained Alignments type bigMaf bigDataUrl bbi/%s.%s.synNet.bb summary bbi/%s.%s.synNet.summary.bb speciesOrder %s html html/%s.chainNet - priority %d -", $QueryDb, $targetDb, $N, $queryDb, $queryDb, $queryAsmName, $queryDate, $targetDb, $queryDb, $targetDb, $queryDb, $queryDb, $targetDb, $chainNetPriority++; + priority %s +", $QueryDb, $targetDb, $N, $comName, $comName, $queryDb, $queryAsmName, $queryDate, $targetDb, $queryDb, $targetDb, $queryDb, $queryDb, $targetDb, $queryPrio{$queryDb}; } `rm -f $buildDir/bbi/$targetDb.${queryDb}.rbestNet.bb`; `rm -f $buildDir/bbi/$targetDb.${queryDb}.rbestNet.summary.bb`; if ( -s "$buildDir/trackData/lastz.$queryDb/bigMaf/${targetAcc}.${queryDb}.rbestNet.bb" ) { `ln -s ../trackData/lastz.$queryDb/bigMaf/${targetAcc}.${queryDb}.rbestNet.bb $buildDir/bbi/$targetDb.${queryDb}.rbestNet.bb`; `ln -s ../trackData/lastz.$queryDb/bigMaf/${targetAcc}.${queryDb}.rbestNet.summary.bb $buildDir/bbi/$targetDb.${queryDb}.rbestNet.summary.bb`; printf " track rbestNet%s parent %sMafNetViewnet subGroups view=net species=s%03d clade=c00 shortLabel %s rbestNet - longLabel %s%s (%s) Reciprocal Best Net Alignment + longLabel %s/%s%s (%s) Chained Alignments type bigMaf bigDataUrl bbi/%s.%s.rbestNet.bb summary bbi/%s.%s.rbestNet.summary.bb speciesOrder %s html html/%s.chainNet - priority %d -", $QueryDb, $targetDb, $N, $queryDb, $queryDb, $queryAsmName, $queryDate, $targetDb, $queryDb, $targetDb, $queryDb, $queryDb, $targetDb, $chainNetPriority++; + priority %s +", $QueryDb, $targetDb, $N, $comName, $comName, $queryDb, $queryAsmName, $queryDate, $targetDb, $queryDb, $targetDb, $queryDb, $queryDb, $targetDb, $queryPrio{$queryDb}; } `rm -f $buildDir/bbi/$targetDb.${queryDb}.liftOverNet.bb`; `rm -f $buildDir/bbi/$targetDb.${queryDb}.liftOverNet.summary.bb`; if ( -s "$buildDir/trackData/lastz.$queryDb/bigMaf/${targetAcc}.${queryDb}.liftOverNet.bb" ) { printf STDERR "constructing liftOverNet links $targetDb $queryDb\n"; `ln -s ../trackData/lastz.$queryDb/bigMaf/${targetAcc}.${queryDb}.liftOverNet.bb $buildDir/bbi/$targetDb.${queryDb}.liftOverNet.bb`; `ln -s ../trackData/lastz.$queryDb/bigMaf/${targetAcc}.${queryDb}.liftOverNet.summary.bb $buildDir/bbi/$targetDb.${queryDb}.liftOverNet.summary.bb`; printf " track liftOverNet%s parent %sMafNetViewnet subGroups view=net species=s%03d clade=c00 shortLabel %s liftOverNet - longLabel %s%s (%s) Lift Over Net Alignment + longLabel %s/%s%s (%s) Chained Alignments type bigMaf bigDataUrl bbi/%s.%s.liftOverNet.bb summary bbi/%s.%s.liftOverNet.summary.bb speciesOrder %s html html/%s.chainNet - priority %d -", $QueryDb, $targetDb, $N, $queryDb, $queryDb, $queryAsmName, $queryDate, $targetDb, $queryDb, $targetDb, $queryDb, $queryDb, $targetDb, $chainNetPriority++; + priority %s +", $QueryDb, $targetDb, $N, $comName, $comName, $queryDb, $queryAsmName, $queryDate, $targetDb, $queryDb, $targetDb, $queryDb, $queryDb, $targetDb, $queryPrio{$queryDb} } $N++; } printf "\n" if ($N > 0);