0d7e402cab1ae33138f397deebe5396064a3b43a hiram Wed Jun 18 14:28:34 2025 -0700 now making hub.txt directly out of the GenArk hub.txt refs #35898 diff --git src/hg/makeDb/trackDb/maybeBuildHub src/hg/makeDb/trackDb/maybeBuildHub index 7f612e48239..87c0b122791 100755 --- src/hg/makeDb/trackDb/maybeBuildHub +++ src/hg/makeDb/trackDb/maybeBuildHub @@ -1,33 +1,105 @@ -#!/bin/bash -e +#!/bin/bash +# exit on any error +set -beEu -o pipefail user=$1 trackDb=$2 db=$3 hubParent=/gbdb/$db/hubs hubDir=$hubParent/$user +############################################################################## +# check if there is an entry in dbDb for name==$db +function hasDbDb() { + local db="$1" + local dbDb=$(hgsql hgcentraltest -Ne 'select count(*) from dbDb where name ="'$db'"') + if [ "${dbDb}" -eq 1 ]; then + return 0 # true: does exist + else + return 1 # false: does not exist + fi +} + +############################################################################## +# try to get the GCx accession name out of dbDb sourceName +function acc() { + local db="$1" + local src=$(hgsql hgcentraltest -Ne 'select sourceName from dbDb where name ="'$db'"') + if [[ "$src" == *GC* ]]; then + ret=`echo "${src}" | sed -e 's#.*GC#GC#;' | sed -e 's#[^ACGF0-9_.]\+##;'` + if [ "x${ret}y" = "xy" ]; then + printf "ERROR: can not find GCx_... accession in dbDb name=$db\n" 1>&2 + exit 255 + else + echo $ret + fi + else + printf "ERROR: can not find GCx_... accession in dbDb name=$db\n" 1>&2 + exit 255 + fi +} + +############################################################################## # check if a database exists, print note and return non-zero if it doesn't -dbExists() { +function dbExists() { local db="$1" local dbChk=$(hgsql -Ne 'show databases like "'$db'"') if [ -z "$dbChk" ] ; then - echo "Note: database $db does not exist, skipping" + printf "Note: database $db does not exist, skipping\n" 1>&2 return 1 else return 0 fi } -if dbExists $db ; then - if test -d $hubParent - then - #rm -rf $hubDir +############################################################################## +### begin main process here +############################################################################## +# if the directory /gbdb/<db>/hubs does not exist, we have no business here +if test ! -d $hubParent ; then + exit 0 +fi +# process 'hs1' just like it has always been processed +if [ "${db}" = "hs1" ]; then + if dbExists $db ; then trackDbToTxt $db $trackDb $hubDir # creates $hubDir/hubAndGenome.txt dbDbToHubTxt $db genome-www@soe.ucsc.edu ../groups.txt $hubDir/hubAndGenome.txt cat $hubDir/hubAndGenome.txt $hubDir/trackDb.txt > $hubDir/hub.txt fi + exit 0 +fi + +# maybe this is a GenArk hub becoming a curated hub +if hasDbDb $db ; then + gcX=`acc $db` + oneOnly=`ls -d */${db} | wc -l` + if [ "${oneOnly}" -eq 1 ]; then + genArkTdb=`ls -d */${db}/genArk.trackDb.ra` + tmpDbTxt="test.$$.trackDb.txt" + ./hubTxtFromGenArk.pl $db $gcX "${tmpDbTxt}" > $db.hAndG.txt + if cmp -s "${genArkTdb}" "${tmpDbTxt}" ; then + : + else + printf "ERROR: need to update the $genArkTdb file\n" 1>&2 + printf "note new contents in: $tmpDbTxt\n" 1>&2 + exit 255 + fi + rm -f "${tmpDbTxt}" + mkdir -p $hubDir + rm -f $hubDir/hubAndGenome.txt + mv $db.hAndG.txt $hubDir/hubAndGenome.txt + trackDbToTxt $db $trackDb $hubDir + cat $hubDir/hubAndGenome.txt $hubDir/trackDb.txt > $hubDir/hub.txt + else + printf "ERROR: finding multiple directories */$db ?\n" 1>&2 + ls -d */${db} 1>&2 + exit 255 + fi +else + exit 0 fi +exit $?