af670dcecc6911452f3e1a5c38cfea1ef0067978
max
  Wed Sep 9 07:31:07 2026 -0700
UniProt otto: submit the parasol batch on hgwdev, drop the ssh to ku

The protein-to-transcript BLAST batch was submitted with

ssh ku "cd <workdir> && para make jobList"

ku has been decommissioned for about two years. It still resolves in DNS, but
"ssh ku" is an immediate "No route to host", so a run would have died at the
mapping stage, which comes only after days of XML parsing.

hgwdev is the parasol head node now, so "para make" runs here with no ssh hop.
Verified with a one-job batch using the same bare-command jobList this script
writes: it lands on a compute node with its cwd set to the batch directory, the
same as the old ku jobs did. Also checked from a compute node that tclsh and the
blast-2.2.16 blastall/formatdb that mapUniprot_doBlast needs are still there.

The cluster name is gone rather than redirected. doUniprot no longer reads
/cluster/bin/scripts/cluster.txt, a file written in 2017 that still says "ku" and
that nothing else in the tree read, and makeUniProtPsl.sh no longer takes a head
node argument, so its positional parameters shift down by one.

refs #38300

diff --git src/hg/utils/otto/uniprot/makeUniProtPsl.sh src/hg/utils/otto/uniprot/makeUniProtPsl.sh
index 61090c7db74..f28828c7131 100755
--- src/hg/utils/otto/uniprot/makeUniProtPsl.sh
+++ src/hg/utils/otto/uniprot/makeUniProtPsl.sh
@@ -59,34 +59,33 @@
 #Q99706-6        20      0.042%
 #P43629-2        20      0.042%
 #P43630-2        28      0.059%
 #P43630-1        28      0.059%
 #Q99706-3        30      0.063%
 #Q99706-4        30      0.063%
 #Q99706-2        30      0.063%
 #Q99706-1        30      0.063%
 #Q8N743  32      0.067%
 
 # the input fasta file has to be created by the uniprotToTab parser (originally from the publications track code)
 UNIPROTFAGZ=$1
 TRANSCRIPTFA=$2
 TRANSCRIPTPSL=$3
 MINALI=$4
-CLUSTER=$5
-WORKDIR=$6
-OUTFNAME=$7
-PAIRNAME=$8
+WORKDIR=$5
+OUTFNAME=$6
+PAIRNAME=$7
 
 #if [[ "$DB" == "ci3" ]]; then
    #MINALI=0.85
 #fi
 
 # if you change BLASTDIR, also must change the cluster script mapUniprot_doBlast
 BLASTDIR=/cluster/bin/blast/x86_64/blast-2.2.16/bin
 
 # stop on errors
 set -e
 # show commands
 set -x 
 
 
 #WORKDIR=makeUniProtPsl-$2-$3-$4.tmp
@@ -107,31 +106,32 @@
         echo WARNING: re-using existing protein-transcript alignments to save time! see $WORKDIR/bestAln.psl
 else
         mkdir -p $WORKDIR/queries
         mkdir -p $WORKDIR/aligns
         faSplit about $WORKDIR/uniProt.fa 2500 $WORKDIR/queries/
         ${BLASTDIR}/formatdb -i $WORKDIR/transcripts.fa -p F
 
         # create joblist and run
         set +x # quiet for now
         >$WORKDIR/jobList
         for i in $WORKDIR/queries/*.fa; do
                 echo "mapUniprot_doBlast transcripts.fa queries/`basename $i` {check out exists aligns/`basename $i .fa`.psl}" >> $WORKDIR/jobList
         done; 
         set -x
         cp mapUniprot_doBlast $WORKDIR/
-        ssh $CLUSTER "cd `pwd`/$WORKDIR && para make jobList"
+        # hgwdev is the parasol head node, so "para make" here talks to the hub directly
+        ( cd $WORKDIR && para make jobList )
         echo Concatenating and filtering protein/transcript alignments
         # sort and pick the best alignments for each protein
         find $WORKDIR/aligns -name '*.psl' | xargs cat | pslReps -noIntrons -nohead -nearTop=0.01 -minAli=$MINALI stdin stdout /dev/null > $WORKDIR/bestAln.psl
 fi
 
 # when we have a list of pairs to filter on, then use it
 if [ -f $WORKDIR/upToTrans.pairs ]; then
     # these are very special pslSelect options:
     # - pass through all PSLs for queries that do not appear in our tables (=all Trembl and a few swissprot sequences missed by our tables)
     # - only compare the part before the dot
     # - use pslSwap as a workaround, as pslSelect doesn't have -tDelim yet and the query IDs don't have dots in them anyways
     #   too lazy to patch pslSelect now
     cat $WORKDIR/upToTrans.pairs | gawk '{OFS="\t"; print $2, $1; }' > $WORKDIR/transToUp.pairs
     pslSwap $WORKDIR/bestAln.psl stdout | pslSelect -qPass -qDelim=. -qtPairs=$WORKDIR/transToUp.pairs stdin stdout | pslSwap stdin $WORKDIR/uniProtVsTranscripts.psl
     # when we have no known gene table, blat the proteins directly and