7c0c6f08b3e53af0c02ec2f198ef1592584dccd9 hiram Sat Apr 1 19:18:30 2023 -0700 correctly remove rmsk.customLib.fa.gz link refs #30508 diff --git src/hg/utils/automation/asmHubTrackDb.sh src/hg/utils/automation/asmHubTrackDb.sh index a019e3f..726496f 100755 --- src/hg/utils/automation/asmHubTrackDb.sh +++ src/hg/utils/automation/asmHubTrackDb.sh @@ -1,977 +1,978 @@ #!/bin/bash set -beEu -o pipefail if [ $# -ne 3 ]; then printf "usage: trackDb.sh > trackDb.txt\n" 1>&2 printf "expecting to find *.ucsc.2bit and bbi/ files at given path\n" 1>&2 printf "asmId may be equal to ncbiAsmId if it is a GenArk build\n" 1>&2 printf "or asmId might be a default dbName if it is a UCSC style\n" 1>&2 printf "browser build.\n" 1>&2 exit 255 fi export asmId=$1 export ncbiAsmId=$2 export buildDir=$3 export scriptDir="$HOME/kent/src/hg/utils/automation" export asmType="n/a" # technique to set variables based on the name in another variable: if [ -s "$buildDir/dropTracks.list" ]; then printf "# reading dropTracks.list\n" 1>&2 for dropTrack in `cat "$buildDir/dropTracks.list"` do notTrack="not_${dropTrack}" # printf "# %s\n" "${notTrack}" 1>&2 eval $notTrack="1" done fi case "${asmId}" in GCA_*) asmType="genbank" ;; GCF_*) asmType="refseq" ;; esac mkdir -p $buildDir/bbi mkdir -p $buildDir/ixIxx # may or may not have a searchTrix for assembly, assume none export searchTrix="" # check to see if there is a searchTrix assembly index if [ -s ${buildDir}/trackData/assemblyGap/${asmId}.assembly.ix ]; then rm -f $buildDir/ixIxx/${asmId}.assembly.ix* ln -s ../trackData/assemblyGap/${asmId}.assembly.ix $buildDir/ixIxx ln -s ../trackData/assemblyGap/${asmId}.assembly.ixx $buildDir/ixIxx searchTrix=" searchTrix ixIxx/${asmId}.assembly.ix" fi if [ -s ${buildDir}/trackData/assemblyGap/${asmId}.assembly.bb ]; then rm -f $buildDir/bbi/${asmId}.assembly.bb ln -s ../trackData/assemblyGap/${asmId}.assembly.bb $buildDir/bbi/${asmId}.assembly.bb printf "track assembly longLabel Assembly shortLabel Assembly visibility pack colorByStrand 150,100,30 230,170,40 color 150,100,30 altColor 230,170,40 bigDataUrl bbi/%s.assembly.bb type bigBed 6 html html/%s.assembly searchIndex name%s url https://www.ncbi.nlm.nih.gov/nuccore/\$\$ urlLabel NCBI Nucleotide database: group map\n\n" "${asmId}" "${asmId}" "${searchTrix}" $scriptDir/asmHubAssembly.pl $asmId $buildDir/html/$asmId.names.tab $buildDir/$asmId.agp.gz https://hgdownload.soe.ucsc.edu/hubs/VGP/genomes/$asmId > $buildDir/html/$asmId.assembly.html fi if [ -s ${buildDir}/trackData/assemblyGap/${asmId}.gap.bb ]; then rm -f $buildDir/bbi/${asmId}.gap.bb ln -s ../trackData/assemblyGap/${asmId}.gap.bb $buildDir/bbi/${asmId}.gap.bb printf "track gap longLabel AGP gap shortLabel Gap (AGP defined) visibility dense color 0,0,0 bigDataUrl bbi/%s.gap.bb type bigBed 4 group map html html/%s.gap\n\n" "${asmId}" "${asmId}" $scriptDir/asmHubGap.pl $asmId $buildDir/html/$asmId.names.tab $buildDir/$asmId.agp.gz https://hgdownload.soe.ucsc.edu/hubs/VGP/genomes/$asmId > $buildDir/html/$asmId.gap.html fi if [ -s ${buildDir}/trackData/cytoBand/${asmId}.cytoBand.bb ]; then rm -f $buildDir/bbi/${asmId}.cytoBand.bb ln -s ../trackData/cytoBand/${asmId}.cytoBand.bb $buildDir/bbi/${asmId}.cytoBand.bb # printf "track cytoBand # shortLabel Chromosome Band # longLabel Ideogram # group map # visibility dense # type bigBed 4 + # bigDataUrl bbi/%s.cytoBandIdeo.bb # html html/%s.cytoBand\n\n" "${asmId}" "${asmId}" # only the ideoGram is needed, not the track printf "track cytoBandIdeo shortLabel Chromosome Band (Ideogram) longLabel Ideogram for Orientation group map visibility dense type bigBed 4 + bigDataUrl bbi/%s.cytoBand.bb\n\n" "${asmId}" # $scriptDir/asmHubCytoBand.pl $asmId $buildDir/html/$asmId.names.tab $buildDir > $buildDir/html/$asmId.cytoBand.html fi if [ -s ${buildDir}/trackData/gc5Base/${asmId}.gc5Base.bw ]; then rm -f $buildDir/bbi/${asmId}.gc5Base.bw ln -s ../trackData/gc5Base/${asmId}.gc5Base.bw $buildDir/bbi/${asmId}.gc5Base.bw printf "track gc5Base shortLabel GC Percent longLabel GC Percent in 5-Base Windows group map visibility full autoScale Off maxHeightPixels 128:36:16 graphTypeDefault Bar gridDefault OFF windowingFunction Mean color 0,0,0 altColor 128,128,128 viewLimits 30:70 type bigWig 0 100 bigDataUrl bbi/%s.gc5Base.bw html html/%s.gc5Base\n\n" "${asmId}" "${asmId}" $scriptDir/asmHubGc5Percent.pl $asmId $buildDir/html/$asmId.names.tab $buildDir > $buildDir/html/$asmId.gc5Base.html fi # see if there are gapOverlap or tandemDup bb files export gapOverlapCount=0 export tanDupCount=0 if [ -s $buildDir/trackData/gapOverlap/${asmId}.gapOverlap.bb ]; then gapOverlapCount=`zcat $buildDir/trackData/gapOverlap/${asmId}.gapOverlap.bed.gz | wc -l` rm -f $buildDir/bbi/${asmId}.gapOverlap.bb ln -s ../trackData/gapOverlap/${asmId}.gapOverlap.bb $buildDir/bbi/${asmId}.gapOverlap.bb fi if [ -s $buildDir/trackData/tandemDups/${asmId}.tandemDups.bb ]; then tanDupCount=`zcat $buildDir/trackData/tandemDups/${asmId}.tandemDups.bed.gz | wc -l` rm -f $buildDir/bbi/${asmId}.tandemDups.bb ln -s ../trackData/tandemDups/${asmId}.tandemDups.bb $buildDir/bbi/${asmId}.tandemDups.bb fi if [ "${gapOverlapCount}" -gt 0 -o "${tanDupCount}" -gt 0 ]; then if [ -z ${not_tanDups+x} ]; then printf "track tanDups shortLabel Tandem Dups longLabel Paired identical sequences compositeTrack on visibility hide type bigBed 12 group map html html/%s.tanDups\n\n" "${asmId}" if [ "${gapOverlapCount}" -gt 0 ]; then printf " track gapOverlap parent tanDups on shortLabel Gap Overlaps longLabel Paired exactly identical sequence on each side of a gap bigDataUrl bbi/%s.gapOverlap.bb type bigBed 12\n\n" "${asmId}" fi if [ "${tanDupCount}" -gt 0 ]; then printf " track tandemDups parent tanDups on shortLabel Tandem Dups longLabel Paired exactly identical sequence survey over entire genome assembly bigDataUrl bbi/%s.tandemDups.bb type bigBed 12\n\n" "${asmId}" fi $scriptDir/asmHubTanDups.pl $asmId $buildDir/html/$asmId.names.tab $buildDir/trackData > $buildDir/html/$asmId.tanDups.html else printf "# skipping the tanDups track\n" 1>&2 fi # the else clause of: if [ -z ${not_tanDups+x} ] fi # if [ "${gapOverlapCount}" -gt 0 -o "${tanDupCount}" -gt 0 ] # see if there are repeatMasker bb files export rmskCount=`(ls $buildDir/trackData/repeatMasker/bbi/${asmId}.rmsk.*.bb 2> /dev/null | wc -l) || true` export newRmsk=`(ls $buildDir/trackData/repeatMasker/${asmId}.rmsk.align.bb $buildDir/trackData/repeatMasker/${asmId}.rmsk.bb 2> /dev/null | wc -l) || true` if [ "${newRmsk}" -gt 0 -o "${rmskCount}" -gt 0 ]; then if [ ! -s "$buildDir/trackData/repeatMasker/$asmId.sorted.fa.out.gz" ]; then printf "ERROR: can not find trackData/repeatMasker/$asmId.sorted.fa.out.gz\n" 1>&2 exit 255 fi # see if there are actually rmsk items in the track, this has to be > 3 export rmskItemCount=`zcat $buildDir/trackData/repeatMasker/$asmId.sorted.fa.out.gz | head | wc -l` # clean up garbage from previous errors here if [ "${rmskItemCount}" -lt 4 ]; then rm -f $buildDir/$asmId.repeatMasker.out.gz rm -f "$buildDir/${asmId}.repeatMasker.version.txt" rm -f $buildDir/bbi/${asmId}.rmsk.align.bb rm -f $buildDir/bbi/${asmId}.rmsk.bb rm -f $buildDir/${asmId}.fa.align.tsv.gz rm -f $buildDir/${asmId}.fa.join.tsv.gz rm -f $buildDir/${asmId}.rmsk.customLib.fa.gz else rm -f $buildDir/$asmId.repeatMasker.out.gz ln -s trackData/repeatMasker/$asmId.sorted.fa.out.gz $buildDir/$asmId.repeatMasker.out.gz if [ -s "$buildDir/trackData/repeatMasker/versionInfo.txt" ]; then rm -f "$buildDir/${asmId}.repeatMasker.version.txt" ln -s trackData/repeatMasker/versionInfo.txt "$buildDir/${asmId}.repeatMasker.version.txt" fi if [ -s "$buildDir/trackData/repeatModeler/${asmId}-families.fa" ]; then + rm -f "$buildDir/${asmId}.rmsk.customLib.fa.gz" cp -p "$buildDir/trackData/repeatModeler/${asmId}-families.fa" "$buildDir/${asmId}.rmsk.customLib.fa" gzip "$buildDir/${asmId}.rmsk.customLib.fa" fi if [ "${newRmsk}" -gt 0 ]; then rm -f $buildDir/bbi/${asmId}.rmsk.align.bb rm -f $buildDir/bbi/${asmId}.rmsk.bb rm -f $buildDir/${asmId}.fa.align.tsv.gz rm -f $buildDir/${asmId}.fa.join.tsv.gz if [ -s "$buildDir/bbi/${asmId}.rmsk.align.bb" ]; then ln -s ../trackData/repeatMasker/${asmId}.rmsk.align.bb $buildDir/bbi/${asmId}.rmsk.align.bb ln -s trackData/repeatMasker/${asmId}.fa.align.tsv.gz $buildDir/${asmId}.fa.align.tsv.gz fi ln -s ../trackData/repeatMasker/${asmId}.rmsk.bb $buildDir/bbi/${asmId}.rmsk.bb ln -s trackData/repeatMasker/${asmId}.sorted.fa.join.tsv.gz $buildDir/${asmId}.fa.join.tsv.gz printf "track repeatMasker shortLabel RepeatMasker longLabel RepeatMasker Repetitive Elements type bigRmsk 9 + visibility pack group varRep bigDataUrl bbi/%s.rmsk.bb\n" "${asmId}" if [ -s "$buildDir/bbi/${asmId}.rmsk.align.bb" ]; then printf "xrefDataUrl bbi/%s.rmsk.align.bb\n" "${asmId}" fi printf "maxWindowToDraw 5000000\n" export rmskClassProfile="$buildDir/trackData/repeatMasker/$asmId.rmsk.class.profile.txt" if [ -s "${rmskClassProfile}" ]; then printf "html html/%s.repeatMasker\n\n" "${asmId}" $scriptDir/asmHubRmskJoinAlign.pl $asmId $buildDir > $buildDir/html/$asmId.repeatMasker.html else printf "\n" fi else # else clause of if [ "${newRmsk}" -gt 0 ] printf "track repeatMasker compositeTrack on shortLabel RepeatMasker longLabel Repeating Elements by RepeatMasker group varRep visibility dense type bigBed 6 + colorByStrand 50,50,150 150,50,50 maxWindowToDraw 10000000 spectrum on html html/%s.repeatMasker\n\n" "${asmId}" $scriptDir/asmHubRmsk.pl $asmId $buildDir/html/$asmId.names.tab $buildDir/trackData/repeatMasker/$asmId.rmsk.class.profile.txt > $buildDir/html/$asmId.repeatMasker.html if [ -s ${buildDir}/trackData/repeatMasker/bbi/${asmId}.rmsk.SINE.bb ]; then rm -f $buildDir/bbi/${asmId}.rmsk.SINE.bb ln -s ../trackData/repeatMasker/bbi/${asmId}.rmsk.SINE.bb $buildDir/bbi/${asmId}.rmsk.SINE.bb printf " track repeatMaskerSINE parent repeatMasker shortLabel SINE longLabel SINE Repeating Elements by RepeatMasker type bigBed 6 + priority 1 bigDataUrl bbi/%s.rmsk.SINE.bb\n\n" "${asmId}" fi if [ -s ${buildDir}/trackData/repeatMasker/bbi/${asmId}.rmsk.LINE.bb ]; then rm -f $buildDir/bbi/${asmId}.rmsk.LINE.bb ln -s ../trackData/repeatMasker/bbi/${asmId}.rmsk.LINE.bb $buildDir/bbi/${asmId}.rmsk.LINE.bb printf " track repeatMaskerLINE parent repeatMasker shortLabel LINE longLabel LINE Repeating Elements by RepeatMasker type bigBed 6 + priority 2 bigDataUrl bbi/%s.rmsk.LINE.bb\n\n" "${asmId}" fi if [ -s ${buildDir}/trackData/repeatMasker/bbi/${asmId}.rmsk.LTR.bb ]; then rm -f $buildDir/bbi/${asmId}.rmsk.LTR.bb ln -s ../trackData/repeatMasker/bbi/${asmId}.rmsk.LTR.bb $buildDir/bbi/${asmId}.rmsk.LTR.bb printf " track repeatMaskerLTR parent repeatMasker shortLabel LTR longLabel LTR Repeating Elements by RepeatMasker type bigBed 6 + priority 3 bigDataUrl bbi/%s.rmsk.LTR.bb\n\n" "${asmId}" fi if [ -s ${buildDir}/trackData/repeatMasker/bbi/${asmId}.rmsk.DNA.bb ]; then rm -f $buildDir/bbi/${asmId}.rmsk.DNA.bb ln -s ../trackData/repeatMasker/bbi/${asmId}.rmsk.DNA.bb $buildDir/bbi/${asmId}.rmsk.DNA.bb printf " track repeatMaskerDNA parent repeatMasker shortLabel DNA longLabel DNA Repeating Elements by RepeatMasker type bigBed 6 + priority 4 bigDataUrl bbi/%s.rmsk.DNA.bb\n\n" "${asmId}" fi if [ -s ${buildDir}/trackData/repeatMasker/bbi/${asmId}.rmsk.Simple.bb ]; then rm -f $buildDir/bbi/${asmId}.rmsk.Simple.bb ln -s ../trackData/repeatMasker/bbi/${asmId}.rmsk.Simple.bb $buildDir/bbi/${asmId}.rmsk.Simple.bb printf " track repeatMaskerSimple parent repeatMasker shortLabel Simple longLabel Simple Repeating Elements by RepeatMasker type bigBed 6 + priority 5 bigDataUrl bbi/%s.rmsk.Simple.bb\n\n" "${asmId}" fi if [ -s ${buildDir}/trackData/repeatMasker/bbi/${asmId}.rmsk.Low_complexity.bb ]; then rm -f $buildDir/bbi/${asmId}.rmsk.Low_complexity.bb ln -s ../trackData/repeatMasker/bbi/${asmId}.rmsk.Low_complexity.bb $buildDir/bbi/${asmId}.rmsk.Low_complexity.bb printf " track repeatMaskerLowComplexity parent repeatMasker shortLabel Low Complexity longLabel Low Complexity Repeating Elements by RepeatMasker type bigBed 6 + priority 6 bigDataUrl bbi/%s.rmsk.Low_complexity.bb\n\n" "${asmId}" fi if [ -s ${buildDir}/trackData/repeatMasker/bbi/${asmId}.rmsk.Satellite.bb ]; then rm -f $buildDir/bbi/${asmId}.rmsk.Satellite.bb ln -s ../trackData/repeatMasker/bbi/${asmId}.rmsk.Satellite.bb $buildDir/bbi/${asmId}.rmsk.Satellite.bb printf " track repeatMaskerSatellite parent repeatMasker shortLabel Satellite longLabel Satellite Repeating Elements by RepeatMasker type bigBed 6 + priority 7 bigDataUrl bbi/%s.rmsk.Satellite.bb\n\n" "${asmId}" fi if [ -s ${buildDir}/trackData/repeatMasker/bbi/${asmId}.rmsk.RNA.bb ]; then rm -f $buildDir/bbi/${asmId}.rmsk.RNA.bb ln -s ../trackData/repeatMasker/bbi/${asmId}.rmsk.RNA.bb $buildDir/bbi/${asmId}.rmsk.RNA.bb printf " track repeatMaskerRNA parent repeatMasker shortLabel RNA longLabel RNA Repeating Elements by RepeatMasker type bigBed 6 + priority 8 bigDataUrl bbi/%s.rmsk.RNA.bb\n\n" "${asmId}" fi if [ -s ${buildDir}/trackData/repeatMasker/bbi/${asmId}.rmsk.Other.bb ]; then rm -f $buildDir/bbi/${asmId}.rmsk.Other.bb ln -s ../trackData/repeatMasker/bbi/${asmId}.rmsk.Other.bb $buildDir/bbi/${asmId}.rmsk.Other.bb printf " track repeatMaskerOther parent repeatMasker shortLabel Other longLabel Other Repeating Elements by RepeatMasker type bigBed 6 + priority 9 bigDataUrl bbi/%s.rmsk.Other.bb\n\n" "${asmId}" fi fi # else clause of if [ "${newRmsk}" -gt 0 ]; then fi # else clause of if [ "${rmskItemCount}" -lt 4 ] fi # if [ "${newRmsk}" -eq 2 -o "${rmskCount}" -gt 0 ]; then if [ -s ${buildDir}/trackData/simpleRepeat/simpleRepeat.bb ]; then rm -f $buildDir/bbi/${asmId}.simpleRepeat.bb ln -s ../trackData/simpleRepeat/simpleRepeat.bb $buildDir/bbi/${asmId}.simpleRepeat.bb printf "track simpleRepeat shortLabel Simple Repeats longLabel Simple Tandem Repeats by TRF group varRep visibility dense type bigBed 4 + bigDataUrl bbi/%s.simpleRepeat.bb html html/%s.simpleRepeat\n\n" "${asmId}" "${asmId}" $scriptDir/asmHubSimpleRepeat.pl $asmId $buildDir/html/$asmId.names.tab $buildDir > $buildDir/html/$asmId.simpleRepeat.html fi ### assume there is no ncbiRefSeq track ### when there is, this will eliminate the ncbiGene track ### and it figures into setting the visibility of the augustus gene track export haveNcbiRefSeq="no" ################################################################### # ncbiRefSeq composite track if [ -s ${buildDir}/trackData/ncbiRefSeq/$asmId.ncbiRefSeq.bb ]; then rm -f $buildDir/bbi/${asmId}.ncbiRefSeq.bb rm -f $buildDir/ixIxx/${asmId}.ncbiRefSeq.ix rm -f $buildDir/ixIxx/${asmId}.ncbiRefSeq.ixx ln -s ../trackData/ncbiRefSeq/$asmId.ncbiRefSeq.bb $buildDir/bbi/${asmId}.ncbiRefSeq.bb ln -s ../trackData/ncbiRefSeq/$asmId.ncbiRefSeq.ix $buildDir/ixIxx/${asmId}.ncbiRefSeq.ix ln -s ../trackData/ncbiRefSeq/$asmId.ncbiRefSeq.ixx $buildDir/ixIxx/${asmId}.ncbiRefSeq.ixx if [ -s ${buildDir}/trackData/ncbiRefSeq/${asmId}*.ncbiRefSeq.gtf.gz ]; then mkdir -p $buildDir/genes rm -f ${buildDir}/genes/${asmId}.ncbiRefSeq.gtf.gz gtfFile=`ls ${buildDir}/trackData/ncbiRefSeq/${asmId}*.ncbiRefSeq.gtf.gz|tail -1|sed -e 's#.*/##;'` ln -s ../trackData/ncbiRefSeq/${gtfFile} ${buildDir}/genes/${asmId}.ncbiRefSeq.gtf.gz fi export dataVersion="html/ncbiRefSeqVersion.txt" if [ -s ${buildDir}/trackData/ncbiRefSeq/$asmId.ncbiRefSeqVersion.txt ]; then dataVersion=`cat ${buildDir}/trackData/ncbiRefSeq/$asmId.ncbiRefSeqVersion.txt` fi printf "track refSeqComposite compositeTrack on shortLabel NCBI RefSeq longLabel RefSeq gene predictions from NCBI group genes visibility pack type bigBed dragAndDrop subTracks allButtonPair on dataVersion $dataVersion html html/%s.refSeqComposite priority 2 track ncbiRefSeq parent refSeqComposite on color 12,12,120 altColor 120,12,12 shortLabel RefSeq All type bigGenePred labelFields name,geneName,geneName2 defaultLabelFields geneName2 searchIndex name searchTrix ixIxx/%s.ncbiRefSeq.ix bigDataUrl bbi/%s.ncbiRefSeq.bb longLabel NCBI RefSeq genes, curated and predicted sets (NM_*, XM_*, NR_*, XR_*, NP_* or YP_*) idXref ncbiRefSeqLink mrnaAcc name baseColorUseCds given baseColorDefault genomicCodons priority 1\n\n" "${asmId}" "${asmId}" "${asmId}" if [ -s ${buildDir}/trackData/ncbiRefSeq/$asmId.ncbiRefSeqCurated.bb ]; then rm -f $buildDir/bbi/${asmId}.ncbiRefSeqCurated.bb rm -f $buildDir/ixIxx/${asmId}.ncbiRefSeqCurated.ix rm -f $buildDir/ixIxx/${asmId}.ncbiRefSeqCurated.ixx ln -s ../trackData/ncbiRefSeq/$asmId.ncbiRefSeqCurated.bb $buildDir/bbi/${asmId}.ncbiRefSeqCurated.bb ln -s ../trackData/ncbiRefSeq/$asmId.ncbiRefSeqCurated.ix $buildDir/ixIxx/${asmId}.ncbiRefSeqCurated.ix ln -s ../trackData/ncbiRefSeq/$asmId.ncbiRefSeqCurated.ixx $buildDir/ixIxx/${asmId}.ncbiRefSeqCurated.ixx printf " track ncbiRefSeqCurated color 12,12,120 parent refSeqComposite on shortLabel RefSeq Curated longLabel NCBI RefSeq genes, curated subset (NM_*, NR_*, NP_* or YP_*) type bigGenePred labelFields name,geneName,geneName2 defaultLabelFields geneName2 searchIndex name searchTrix ixIxx/%s.ncbiRefSeqCurated.ix idXref ncbiRefSeqLink mrnaAcc name bigDataUrl bbi/%s.ncbiRefSeqCurated.bb baseColorUseCds given baseColorDefault genomicCodons priority 2\n\n" "${asmId}" "${asmId}" fi if [ -s ${buildDir}/trackData/ncbiRefSeq/$asmId.ncbiRefSeqPredicted.bb ]; then rm -f $buildDir/bbi/${asmId}.ncbiRefSeqPredicted.bb rm -f $buildDir/ixIxx/${asmId}.ncbiRefSeqPredicted.ix rm -f $buildDir/ixIxx/${asmId}.ncbiRefSeqPredicted.ixx ln -s ../trackData/ncbiRefSeq/$asmId.ncbiRefSeqPredicted.bb $buildDir/bbi/${asmId}.ncbiRefSeqPredicted.bb ln -s ../trackData/ncbiRefSeq/$asmId.ncbiRefSeqPredicted.ix $buildDir/ixIxx/${asmId}.ncbiRefSeqPredicted.ix ln -s ../trackData/ncbiRefSeq/$asmId.ncbiRefSeqPredicted.ixx $buildDir/ixIxx/${asmId}.ncbiRefSeqPredicted.ixx printf " track ncbiRefSeqPredicted color 12,12,120 parent refSeqComposite on shortLabel RefSeq Predicted longLabel NCBI RefSeq genes, predicted subset (XM_* or XR_*) type bigGenePred labelFields name,geneName,geneName2 defaultLabelFields geneName2 searchIndex name searchTrix ixIxx/%s.ncbiRefSeqPredicted.ix idXref ncbiRefSeqLink mrnaAcc name bigDataUrl bbi/%s.ncbiRefSeqPredicted.bb baseColorUseCds given baseColorDefault genomicCodons priority 3\n\n" "${asmId}" "${asmId}" fi if [ -s ${buildDir}/trackData/ncbiRefSeq/$asmId.ncbiRefSeqOther.bb ]; then rm -f $buildDir/bbi/${asmId}.ncbiRefSeqOther.bb rm -f $buildDir/ixIxx/${asmId}.ncbiRefSeqOther.ix rm -f $buildDir/ixIxx/${asmId}.ncbiRefSeqOther.ixx ln -s ../trackData/ncbiRefSeq/$asmId.ncbiRefSeqOther.bb $buildDir/bbi/${asmId}.ncbiRefSeqOther.bb rm -f $buildDir/ixIxx/${asmId}.xenoRefGene.ix ln -s ../trackData/ncbiRefSeq/$asmId.ncbiRefSeqOther.ix $buildDir/ixIxx/${asmId}.ncbiRefSeqOther.ix ln -s ../trackData/ncbiRefSeq/$asmId.ncbiRefSeqOther.ixx $buildDir/ixIxx/${asmId}.ncbiRefSeqOther.ixx printf " track ncbiRefSeqOther color 32,32,32 parent refSeqComposite on shortLabel RefSeq Other longLabel NCBI RefSeq other annotations (not NM_*, NR_*, XM_*, XR_*, NP_* or YP_*) priority 4 searchIndex name searchTrix ixIxx/%s.ncbiRefSeqOther.ix bigDataUrl bbi/%s.ncbiRefSeqOther.bb type bigBed 12 + labelFields name skipEmptyFields on urls GeneID=\"https://www.ncbi.nlm.nih.gov/gene/\$\$\" MIM=\"https://www.ncbi.nlm.nih.gov/omim/\$\$\" HGNC=\"http://www.genenames.org/cgi-bin/gene_symbol_report?hgnc_id=\$\$\" FlyBase=\"http://flybase.org/reports/\$\$\" WormBase=\"http://www.wormbase.org/db/gene/gene?name=\$\$\" RGD=\"https://rgd.mcw.edu/rgdweb/search/search.html?term=\$\$\" SGD=\"https://www.yeastgenome.org/locus/\$\$\" miRBase=\"http://www.mirbase.org/cgi-bin/mirna_entry.pl?acc=\$\$\" ZFIN=\"https://zfin.org/\$\$\" MGI=\"http://www.informatics.jax.org/marker/\$\$\"\n\n" "${asmId}" "${asmId}" fi if [ -s ${buildDir}/trackData/ncbiRefSeq/$asmId.bigPsl.bb ]; then rm -f $buildDir/bbi/${asmId}.bigPsl.bb ln -s ../trackData/ncbiRefSeq/$asmId.bigPsl.bb $buildDir/bbi/${asmId}.bigPsl.bb printf " track ncbiRefSeqPsl priority 5 parent refSeqComposite off shortLabel RefSeq Alignments longLabel RefSeq Alignments of RNAs type bigPsl searchIndex name bigDataUrl bbi/%s.bigPsl.bb indelDoubleInsert on indelQueryInsert on showDiffBasesAllScales . showDiffBasesMaxZoom 10000.0 showCdsMaxZoom 10000.0 showCdsAllScales . baseColorDefault diffCodons pslSequence no baseColorUseSequence lfExtra baseColorUseCds table given color 0,0,0\n\n" "${asmId}" fi if [ -s ${buildDir}/trackData/ncbiRefSeq/$asmId.ncbiRefSeqSelectCurated.bb ]; then rm -f $buildDir/bbi/${asmId}.ncbiRefSeqSelectCurated.bb rm -f $buildDir/ixIxx/${asmId}.ncbiRefSeqSelectCurated.ix rm -f $buildDir/ixIxx/${asmId}.ncbiRefSeqSelectCurated.ixx ln -s ../trackData/ncbiRefSeq/$asmId.ncbiRefSeqSelectCurated.bb $buildDir/bbi/${asmId}.ncbiRefSeqSelectCurated.bb ln -s ../trackData/ncbiRefSeq/$asmId.ncbiRefSeqSelectCurated.ix $buildDir/ixIxx/${asmId}.ncbiRefSeqSelectCurated.ix ln -s ../trackData/ncbiRefSeq/$asmId.ncbiRefSeqSelectCurated.ixx $buildDir/ixIxx/${asmId}.ncbiRefSeqSelectCurated.ixx printf " track ncbiRefSeqSelect parent refSeqComposite off priority 7 type bigGenePred shortLabel RefSeq Select longLabel NCBI RefSeq/MANE Select: one representative transcript per protein-coding gene idXref ncbiRefSeqLink mrnaAcc name color 20,20,160 labelFields name,geneName,geneName2 searchIndex name searchTrix ixIxx/%s.ncbiRefSeqSelectCurated.ix bigDataUrl bbi/%s.ncbiRefSeqSelectCurated.bb baseColorUseCds given baseColorDefault genomicCodons\n\n" "${asmId}" "${asmId}" fi if [ -s ${buildDir}/trackData/ncbiRefSeq/$asmId.ncbiRefSeqVersion.txt ]; then rm -f $buildDir/html/$asmId.ncbiRefSeqVersion.txt ln -s ../trackData/ncbiRefSeq/$asmId.ncbiRefSeqVersion.txt $buildDir/html/ fi $scriptDir/asmHubNcbiRefSeq.pl $asmId $buildDir/html/$asmId.names.tab $buildDir/trackData > $buildDir/html/$asmId.refSeqComposite.html haveNcbiRefSeq="yes" fi # ncbiRefSeq composite track ### assume there is no ncbiGene track ### it figures into setting the visibility of the augustus gene track export haveNcbiGene="no" ################################################################### ## setup ncbiGene only if ncbiRefSeq is not present if [ "${haveNcbiRefSeq}" = "no" ]; then # may or may not have a searchTrix for ncbiGene, assume none searchTrix="" # check to see if there is a index for ncbiGene if [ -s ${buildDir}/trackData/ncbiGene/$asmId.ncbiGene.ix ]; then searchTrix=" searchTrix ixIxx/$asmId.ncbiGene.ix" fi if [ -s ${buildDir}/trackData/ncbiGene/$asmId.ncbiGene.bb ]; then rm -f $buildDir/bbi/${asmId}.ncbiGene.bb rm -f $buildDir/ixIxx/${asmId}.ncbiGene.ix rm -f $buildDir/ixIxx/${asmId}.ncbiGene.ixx export longLabel="Gene models submitted to NCBI" export shortLabel="Gene models" if [ "$asmType" = "refseq" ]; then longLabel="NCBI gene predictions" shortLabel="NCBI Genes" fi ln -s ../trackData/ncbiGene/$asmId.ncbiGene.bb $buildDir/bbi/${asmId}.ncbiGene.bb ln -s ../trackData/ncbiGene/$asmId.ncbiGene.ix $buildDir/ixIxx/${asmId}.ncbiGene.ix ln -s ../trackData/ncbiGene/$asmId.ncbiGene.ixx $buildDir/ixIxx/${asmId}.ncbiGene.ixx printf "track ncbiGene longLabel $longLabel shortLabel $shortLabel visibility pack color 0,80,150 altColor 150,80,0 colorByStrand 0,80,150 150,80,0 bigDataUrl bbi/%s.ncbiGene.bb type bigGenePred html html/%s.ncbiGene searchIndex name%s url https://www.ncbi.nlm.nih.gov/gene/?term=\$\$ urlLabel Entrez gene: labelFields geneName,geneName2 defaultLabelFields geneName2 group genes\n\n" "${asmId}" "${asmId}" "${searchTrix}" $scriptDir/asmHubNcbiGene.pl $asmId $ncbiAsmId $buildDir/html/$asmId.names.tab $buildDir/trackData > $buildDir/html/$asmId.ncbiGene.html haveNcbiGene="yes" fi # if [ -s ${buildDir}/trackData/ncbiGene/$asmId.ncbiGene.bb ] fi # if [ "${haveNcbiRefSeq}" = "no" ] ################################################################### ################################################################### # CpG Islands composite export cpgVis="off" # if there is no unmasked track, then set cpgVis to pack if [ ! -s ${buildDir}/trackData/cpgIslands/unmasked/${asmId}.cpgIslandExtUnmasked.bb ]; then cpgVis="on" fi if [ -s ${buildDir}/trackData/cpgIslands/unmasked/${asmId}.cpgIslandExtUnmasked.bb -o -s ${buildDir}/trackData/cpgIslands/masked/${asmId}.cpgIslandExt.bb ]; then rm -f ${buildDir}/bbi/${asmId}.cpgIslandExtUnmasked.bb ${buildDir}/bbi/${asmId}.cpgIslandExt.bb printf "track cpgIslands compositeTrack on shortLabel CpG Islands longLabel CpG Islands (Islands < 300 Bases are Light Green) group regulation visibility pack type bigBed 4 + html html/%s.cpgIslands\n\n" "${asmId}" fi if [ -s ${buildDir}/trackData/cpgIslands/masked/${asmId}.cpgIslandExt.bb ]; then ln -s ../trackData/cpgIslands/masked/${asmId}.cpgIslandExt.bb ${buildDir}/bbi/${asmId}.cpgIslandExt.bb printf " track cpgIslandExt parent cpgIslands %s shortLabel CpG Islands longLabel CpG Islands (Islands < 300 Bases are Light Green) type bigBed 4 + priority 1 bigDataUrl bbi/%s.cpgIslandExt.bb\n\n" "${cpgVis}" "${asmId}" fi if [ -s ${buildDir}/trackData/cpgIslands/unmasked/${asmId}.cpgIslandExtUnmasked.bb ]; then ln -s ../trackData/cpgIslands/unmasked/${asmId}.cpgIslandExtUnmasked.bb ${buildDir}/bbi/${asmId}.cpgIslandExtUnmasked.bb printf " track cpgIslandExtUnmasked parent cpgIslands on shortLabel Unmasked CpG longLabel CpG Islands on All Sequence (Islands < 300 Bases are Light Green) type bigBed 4 + priority 2 bigDataUrl bbi/%s.cpgIslandExtUnmasked.bb\n\n" "${asmId}" fi if [ -s ${buildDir}/trackData/cpgIslands/unmasked/${asmId}.cpgIslandExtUnmasked.bb -o -s ${buildDir}/trackData/cpgIslands/masked/${asmId}.cpgIslandExt.bb ]; then $scriptDir/asmHubCpG.pl $asmId $buildDir/html/$asmId.names.tab $buildDir/bbi/$asmId > $buildDir/html/$asmId.cpgIslands.html fi ################################################################### # windowMasker if [ -s ${buildDir}/trackData/windowMasker/${asmId}.windowMasker.bb ]; then rm -f ${buildDir}/bbi/${asmId}.windowMasker.bb ln -s ../trackData/windowMasker/${asmId}.windowMasker.bb ${buildDir}/bbi/${asmId}.windowMasker.bb printf "track windowMasker shortLabel WM + SDust longLabel Genomic Intervals Masked by WindowMasker + SDust group varRep visibility dense type bigBed 3 bigDataUrl bbi/%s.windowMasker.bb html html/%s.windowMasker\n\n" "${asmId}" "${asmId}" $scriptDir/asmHubWindowMasker.pl $asmId $buildDir/html/$asmId.names.tab $buildDir > $buildDir/html/$asmId.windowMasker.html fi ################################################################### # allGaps if [ -s ${buildDir}/trackData/allGaps/${asmId}.allGaps.bb ]; then rm -f ${buildDir}/bbi/${asmId}.allGaps.bb ln -s ../trackData/allGaps/${asmId}.allGaps.bb ${buildDir}/bbi/${asmId}.allGaps.bb printf "track allGaps shortLabel All Gaps longLabel All gaps of unknown nucleotides (N's), including AGP annotated gaps group map visibility dense type bigBed 3 bigDataUrl bbi/%s.allGaps.bb html html/%s.allGaps\n\n" "${asmId}" "${asmId}" $scriptDir/asmHubAllGaps.pl $asmId $buildDir/html/$asmId.names.tab $buildDir/$asmId.agp.gz https://hgdownload.soe.ucsc.edu/hubs/VGP/genomes/$asmId $buildDir/bbi/$asmId > $buildDir/html/$asmId.allGaps.html fi ################################################################### # augustus genes if [ -z ${not_augustus+x} ]; then if [ -s ${buildDir}/trackData/augustus/${asmId}.augustus.bb ]; then rm -f ${buildDir}/bbi/${asmId}.augustus.bb rm -f ${buildDir}/genes/${asmId}.augustus.gtf.gz ln -s ../trackData/augustus/${asmId}.augustus.bb ${buildDir}/bbi/${asmId}.augustus.bb if [ -s ${buildDir}/trackData/augustus/${asmId}.augustus.gtf.gz ]; then mkdir -p $buildDir/genes ln -s ../trackData/augustus/${asmId}.augustus.gtf.gz ${buildDir}/genes/${asmId}.augustus.gtf.gz fi export augustusVis="dense" if [ "${haveNcbiGene}" = "no" -a "${haveNcbiRefSeq}" = "no" ]; then augustusVis="pack" fi printf "track augustus shortLabel Augustus longLabel Augustus Gene Predictions group genes visibility %s color 180,0,0 type bigGenePred bigDataUrl bbi/%s.augustus.bb html html/%s.augustus\n\n" "${augustusVis}" "${asmId}" "${asmId}" $scriptDir/asmHubAugustusGene.pl $asmId $buildDir/html/$asmId.names.tab $buildDir/bbi/$asmId > $buildDir/html/$asmId.augustus.html fi else printf "# skipping the augustus track\n" 1>&2 fi # the else clause of: if [ -z ${not_augustus+x} ] ################################################################### # xenoRefGene genes if [ -s ${buildDir}/trackData/xenoRefGene/${asmId}.xenoRefGene.bb ]; then rm -f $buildDir/ixIxx/${asmId}.xenoRefGene.ix rm -f $buildDir/ixIxx/${asmId}.xenoRefGene.ixx rm -f $buildDir/bbi/${asmId}.xenoRefGene.bb rm -f $buildDir/genes/${asmId}.xenoRefGene.gtf.gz if [ -s ${buildDir}/trackData/xenoRefGene/${asmId}.xenoRefGene.gtf.gz ]; then mkdir -p $buildDir/genes ln -s ../trackData/xenoRefGene/${asmId}.xenoRefGene.gtf.gz ${buildDir}/genes/${asmId}.xenoRefGene.gtf.gz fi ln -s ../trackData/xenoRefGene/${asmId}.xenoRefGene.bb ${buildDir}/bbi/${asmId}.xenoRefGene.bb ln -s ../trackData/xenoRefGene/$asmId.xenoRefGene.ix $buildDir/ixIxx/${asmId}.xenoRefGene.ix ln -s ../trackData/xenoRefGene/$asmId.xenoRefGene.ixx $buildDir/ixIxx/${asmId}.xenoRefGene.ixx printf "track xenoRefGene shortLabel RefSeq mRNAs longLabel RefSeq mRNAs mapped to this assembly group rna visibility pack color 180,0,0 type bigGenePred bigDataUrl bbi/%s.xenoRefGene.bb url https://www.ncbi.nlm.nih.gov/nuccore/\$\$ urlLabel NCBI Nucleotide database: labelFields name,geneName,geneName2 defaultLabelFields geneName searchIndex name searchTrix ixIxx/%s.xenoRefGene.ix html html/%s.xenoRefGene\n\n" "${asmId}" "${asmId}" "${asmId}" $scriptDir/asmHubXenoRefGene.pl $asmId $buildDir/html/$asmId.names.tab $buildDir/trackData > $buildDir/html/$asmId.xenoRefGene.html fi ################################################################### # Ensembl genes if [ -s ${buildDir}/trackData/ensGene/bbi/${asmId}.ensGene.bb ]; then ls -og ${buildDir}/trackData/ensGene/bbi/${asmId}.ensGene.bb 1>&2 printf "# link: ../trackData/ensGene/bbi/${asmId}.ensGene.bb ${buildDir}/bbi/${asmId}.ensGene.bb\n" 1>&2 rm -f ${buildDir}/bbi/${asmId}.ensGene.bb ln -s ../trackData/ensGene/bbi/${asmId}.ensGene.bb ${buildDir}/bbi/${asmId}.ensGene.bb rm -f ${buildDir}/ixIxx/${asmId}.ensGene.ix rm -f ${buildDir}/ixIxx/${asmId}.ensGene.ixx ln -s ../trackData/ensGene/process/${asmId}.ensGene.ix $buildDir/ixIxx/${asmId}.ensGene.ix ln -s ../trackData/ensGene/process/${asmId}.ensGene.ixx $buildDir/ixIxx/${asmId}.ensGene.ixx export ensVersion="v86" if [ -s ${buildDir}/trackData/ensGene/version.txt ]; then ensVersion=`cat "${buildDir}/trackData/ensGene/version.txt"` fi printf "track ensGene shortLabel Ensembl genes longLabel Ensembl genes %s group genes priority 40 visibility pack color 150,0,0 type bigBed 12 . bigDataUrl bbi/%s.ensGene.bb searchIndex name searchTrix ixIxx/%s.ensGene.ix html html/%s.ensGene\n\n" "${ensVersion}" "${asmId}" "${asmId}" "${asmId}" $scriptDir/asmHubEnsGene.pl $asmId $buildDir/html/$asmId.names.tab $buildDir/bbi/$asmId > $buildDir/html/$asmId.ensGene.html "${ensVersion}" else printf "# no ensGene found\n" 1>&2 fi # hubLinks is for mouseStrains specific hub only export hubLinks="/hive/data/genomes/asmHubs/hubLinks" if [ -s ${hubLinks}/${asmId}/rnaSeqData/$asmId.trackDb.txt ]; then printf "include rnaSeqData/%s.trackDb.txt\n\n" "${asmId}" fi ## for mouse strain hubs only ## turned off 2022-11-02 until these can be correctly translated ## to GenArk naming schemes ### if [ -s "${buildDir}/$asmId.bigMaf.trackDb.txt" ]; then ### printf "include %s.bigMaf.trackDb.txt\n\n" "${asmId}" ### fi ################################################################### # check for blat sameSpecies liftOver, then link to lift over chain file export lo=`ls -d ${buildDir}/trackData/blat.* 2> /dev/null | wc -l` if [ "${lo}" -gt 0 ]; then mkdir -p ${buildDir}/liftOver for loS in `ls -d ${buildDir}/trackData/blat.* 2> /dev/null` do blatDir=`basename "${loS}"` overChain=`ls ${loS}/*.over.chain.gz | awk -F'/' "{print \\$NF}"` rm -f ${buildDir}/liftOver/${overChain} ln -s ../trackData/${blatDir}/${overChain} ${buildDir}/liftOver done fi ################################################################### # check for lastz/chain/net available export lz=`ls -d ${buildDir}/trackData/lastz.* 2> /dev/null | wc -l` if [ "${lz}" -gt 0 ]; then if [ "${lz}" -eq 1 ]; then printf "single chainNet\n" 1>&2 export lastzDir=`ls -d ${buildDir}/trackData/lastz.*` export oOrganism=`basename "${lastzDir}" | sed -e 's/lastz.//;'` # single chainNet here, no need for a composite track, does the symLinks too $scriptDir/asmHubChainNetTrackDb.sh $asmId $buildDir $scriptDir/asmHubChainNet.pl $asmId $ncbiAsmId $buildDir/html/$asmId.names.tab $oOrganism > $buildDir/html/$asmId.chainNet.html else printf "composite chainNet\n" 1>&2 # multiple chainNets here, create composite track, does the symLinks too $scriptDir/asmHubChainNetTrackDb.pl $buildDir $scriptDir/asmHubChainNetComposite.pl $asmId $ncbiAsmId $buildDir/html/$asmId.names.tab > $buildDir/html/$asmId.chainNet.html fi fi ################################################################### # crisprAll track if [ -s ${buildDir}/trackData/crisprAll/crispr.bb ]; then rm -f $buildDir/bbi/${asmId}.crisprAll.bb rm -f $buildDir/bbi/${asmId}.crisprAllDetails.tab ln -s ../trackData/crisprAll/crispr.bb ${buildDir}/bbi/${asmId}.crisprAll.bb ln -s ../trackData/crisprAll/crisprDetails.tab $buildDir/bbi/${asmId}.crisprAllDetails.tab printf "track crisprAllTargets visibility hide shortLabel CRISPR Targets longLabel CRISPR/Cas9 -NGG Targets, whole genome group genes type bigBed 9 + html html/%s.crisprAll itemRgb on mouseOverField _mouseOver scoreLabel MIT Guide Specificity Score bigDataUrl bbi/%s.crisprAll.bb # details page is not using a mysql table but a tab-sep file detailsTabUrls _offset=bbi/%s.crisprAllDetails.tab url http://crispor.tefor.net/crispor.py?org=\$D&pos=\$S:\${&pam=NGG urlLabel Click here to show this guide on Crispor.org, with expression oligos, validation primers and more tableBrowser noGenome noGenomeReason This track is too big for whole-genome Table Browser access, it would lead to a timeout in your internet browser. Please see the CRISPR Track documentation, the section \"Data Access\", for bulk-download options. Contact us if you encounter difficulties with downloading the data. denseCoverage 0 scoreFilterMax 100 " "${asmId}" "${asmId}" "${asmId}" $scriptDir/asmHubCrisprAll.pl $asmId $buildDir/html/$asmId.names.tab $buildDir/trackData > $buildDir/html/$asmId.crisprAll.html fi # if [ -s ${buildDir}/trackData/crisprAll/crispr.bb ] # TOGA track if exists # build directory can be either TOGAvGalGal6v1 or TOGAvHg38v1 export tg=`ls -d ${buildDir}/trackData/TOGAv* 2> /dev/null | wc -l` if [ "${tg}" -gt 0 ]; then rm -f $buildDir/bbi/HLTOGAannotVs*.* rm -f $buildDir/ixIxx/HLTOGAannotVs*.* tData=`ls -d $buildDir/trackData/TOGAv* | sed -e 's#.*/trackData#trackData#;'` fBase=`ls $buildDir/trackData/TOGAv*/HLTOGAannotVs*.bb | sed -e 's#.*/##; s/.bb//;'` # there is a bug in the source files that have galGal6 when they should # be GalGal6 FBase=`echo $fBase | sed -e 's#galGal6#GalGal6#;'` ln -s ../$tData/$fBase.bb $buildDir/bbi/$FBase.bb ln -s ../$tData/$fBase.ix $buildDir/ixIxx/$FBase.ix ln -s ../$tData/$fBase.ixx $buildDir/ixIxx/$FBase.ixx if [ -d ${buildDir}/trackData/TOGAvHg38v1 ]; then printf "track HLTOGAannotvHg38v1 bigDataUrl bbi/HLTOGAannotVsHg38v1.bb shortLabel TOGA vs. hg38 longLabel TOGA annotations using human/hg38 as reference group genes visibility pack itemRgb on type bigBed 12 searchIndex name searchTrix ixIxx/HLTOGAannotVsHg38v1.ix html html/TOGAannotation " elif [ -d ${buildDir}/trackData/TOGAvGalGal6v1 ]; then printf "track HLTOGAannotvGalGal6v1 bigDataUrl bbi/HLTOGAannotVsGalGal6v1.bb shortLabel TOGA vs. galGal6 longLabel TOGA annotations using chicken/galGal6 as reference group genes visibility pack itemRgb on type bigBed 12 searchIndex name searchTrix ixIxx/HLTOGAannotVsGalGal6v1.ix html html/TOGAannotation " else printf "# ERROR: do not recognize TOGA build directory:\n" 1>&2 ls -d ${buildDir}/trackData/TOGAv* 1>&2 exit 255 fi $scriptDir/asmHubTOGA.pl $asmId $buildDir/html/$asmId.names.tab $buildDir/trackData > $buildDir/html/TOGAannotation.html fi # if [ "${tg}" -gt 0 ] # accessionId only used for include statements for other trackDb.txt files export accessionId="${asmId}" case ${asmId} in GC*) accessionId=`echo "$asmId" | awk -F"_" '{printf "%s_%s", $1, $2}'` ;; esac if [ -s "${buildDir}/$asmId.userTrackDb.txt" ]; then printf "\ninclude %s.userTrackDb.txt\n" "${accessionId}" fi if [ -s "${buildDir}/$asmId.trackDbOverrides.txt" ]; then printf "\ninclude %s.trackDbOverrides.txt\n" "${accessionId}" fi