2bd3c930e4d93e242ee896ab83a585f6b83b8069
hiram
  Fri Sep 11 14:28:03 2020 -0700
update gold table search rule for new fakeAgp refs #19883

diff --git src/hg/makeDb/doc/neoSch1/initialBuild.txt src/hg/makeDb/doc/neoSch1/initialBuild.txt
index 8bd3286..2db0cc6 100644
--- src/hg/makeDb/doc/neoSch1/initialBuild.txt
+++ src/hg/makeDb/doc/neoSch1/initialBuild.txt
@@ -1,830 +1,834 @@
 # for emacs: -*- mode: sh; -*-
 
 # This file describes browser build for the neoSch1
 # Neomonachus schauinslandi - Hawaiian monk seal
 
 # Assembly name:  ASM220157v1
 # Organism name:  Neomonachus schauinslandi (Hawaiian monk seal)
 # Sex:  male
 # Taxid:          29088
 # BioSample:      SAMN06841387
 # BioProject:     PRJNA384558
 # Submitter:      Johns Hopkins University
 # Date:           2017-6-20
 # Assembly type:  haploid
 # Release type:   major
 # Assembly level: Scaffold
 # Genome representation: full
 # WGS project:    NINY01
 # Assembly method: RefAligner v. 5122; Supernova v. 1.1
 # Expected final version: No
 # Genome coverage: 61.0x
 # Sequencing technology: Illumina HiSeq
 # RefSeq category: Representative Genome
 # GenBank assembly accession: GCA_002201575.1
 # RefSeq assembly accession: GCF_002201575.1
 # RefSeq assembly and GenBank assemblies identical: no
 #
 ## Assembly-Units:
 ## GenBank Unit Accession       RefSeq Unit Accession   Assembly-Unit name
 ## GCA_002201765.1      GCF_002201765.1 Primary Assembly
 ##      GCF_000059335.1 non-nuclear
 
 #############################################################################
 # obtain photograph (DONE - 2017-09-21 - Hiram)
     mkdir -p /hive/data/genomes/neoSch1/photo
     cd /hive/data/genomes/neoSch1/photo
 
     wget -O photoFile "https://upload.wikimedia.org/wikipedia/commons/8/83/Monachus_schauinslandi.jpg"
 
     convert -sharpen 0 -normalize -geometry 400x400 -quality 80 photoFile \
        Neomonachus_schauinsland.jpg
 
     printf "photoCreditURL\thttps://www.linkedin.com/in/kentbackman/
 photoCreditName\tKent Backman via WikiMedia Commons\n" > ../photoReference.txt
 
 #############################################################################
 # fetch sequence from new style download directory (DONE - 2017-09-21 - Hiram)
     mkdir -p /hive/data/genomes/neoSch1/refseq
     cd /hive/data/genomes/neoSch1/refseq
 
     time rsync -L -a -P \
 rsync://ftp.ncbi.nlm.nih.gov/genomes/refseq/vertebrate_mammalian/Neomonachus_schauinslandi/all_assembly_versions/GCF_002201575.1_ASM220157v1/ ./
 
     # real    1m44.075s
 
     # sent 631 bytes  received 2674936273 bytes  25597482.33 bytes/sec
     # total size is 2674606651  speedup is 1.00
 
     # measure what we have here:
     faSize GCF_002201575.1_ASM220157v1_genomic.fna.gz
 
 # 2400934290 bases (53716973 N's 2347217317 real 1565001274 upper
 #	782216043 lower) in 7873 sequences in 1 files
 # Total size: mean 304958.0 sd 3152511.1 min 1000 (NW_018732762.1)
 #	max 84771923 (NW_018734349.1) median 1998
 # %32.58 masked total, %33.33 masked real
 
     faCount *0_genomic.fna.gz | tail
     faCount GCF_002201575.1_ASM220157v1_genomic.fna.gz | tail
 # #seq    len             A       C          G       T         N       cpg
 # total 2400934290 687432582 485951339 485984591 687848805 53716973 27275876
 
 #############################################################################
 # fixup to UCSC naming scheme (DONE - 2017-09-22 - Hiram)
     mkdir /hive/data/genomes/neoSch1/ucsc
     cd /hive/data/genomes/neoSch1/ucsc
 
     # verify no duplicate sequences:
     time faToTwoBit ../refseq/*1_genomic.fna.gz refseq.2bit
     #	real    1m12.231s
 
     twoBitDup refseq.2bit
     # should be silent output, otherwise the duplicates need to be removed
 # NW_018729921.1 and NW_018729920.1 are identical
 
     echo "NW_018729921.1" > remove.list
 
     # since this is an unplaced contig assembly, verify all names are .1:
     twoBitInfo refseq.2bit  stdout | awk '{print $1}' \
 	| sed -e 's/_[0-9]\+//;' | sort | uniq -c
     #       1 NC.1
     #    7872 NW.1
 
     # in this case, all the .1's can be changed to: v1
 
     # this one has unlocalized scaffolds *WITHOUT* a chrom assembly ?
     $HOME/kent/src/hg/utils/automation/unlocalizedWithChroms.pl \
         ../refseq/*_assembly_structure/Primary_Assembly
     # processed 22 sequences into chr*_random.gz 1 files
 
     zcat ../refseq/*1_assembly_structure/Primary_Assembly/unplaced_scaffolds/AGP/unplaced.scaf.agp.gz \
        | grep -v "^#" | grep -v `cat remove.list` | sed -e 's/\.1/v1/;' \
           > chrUn.neoSch1.agp
 
     zcat ../refseq/*1_assembly_structure/Primary_Assembly/unplaced_scaffolds/FASTA/unplaced.scaf.fna.gz \
        | faSomeRecords -exclude stdin remove.list stdout \
          | sed -e 's/.1 Neomonachus .*/v1/;' > chrUn.neoSch1.fa
 
     zcat ../refseq/*1_assembly_structure/non-nuclear/assembled_chromosomes/AGP/chrMT.comp.agp.gz \
 	| grep -v "^#" | sed -e 's/^NC_[0-9.]\+/chrM/;' > chrM.agp
 
     zcat ../refseq/*1_assembly_structure/non-nuclear/assembled_chromosomes/FASTA/chrMT.fna.gz \
 	| sed -e 's/NC_.*/chrM/;' > chrM.fa
 
     time gzip chr*.fa
     # real    12m14.210s
 
     # verify fasta and AGP match:
     time faToTwoBit chr*.fa.gz test.2bit
     # real    1m4.793s
 
     # verify still silent:
     twoBitDup test.2bit
 
     # and check AGP vs. fasta correspondence:
     cat *.agp | checkAgpAndFa stdin test.2bit 2>&1 | tail
     #  All AGP and FASTA entries agree - both files are valid
 
     # verify nothing lost compared to genbank:
     time twoBitToFa test.2bit stdout | faSize stdin
 
 # 2400839308 bases (53716773 N's 2347122535 real 2347122535 upper 0 lower)
 #	in 7872 sequences in 1 files
 # Total size: mean 304984.7 sd 3152710.5 min 1000 (NW_018732762v1)
 #	max 84771923 (NW_018734349v1) median 1998
 # %0.00 masked total, %0.00 masked real
 
 # real    0m41.314s
 
     # the original has the one extra duplicate contig that was removed:
 # 2400934290 bases (53716973 N's 2347217317 real 1565001274 upper
 #	782216043 lower) in 7873 sequences in 1 files
 
     # the missing contig size:
 
     calc 2400934290 - 2400839308
 2400934290 - 2400839308 = 94982.000000
 
     twoBitInfo test.2bit stdout | grep NW_018729920
 # NW_018729920v1  94982
 
 #############################################################################
 #  Initial database build (DONE - 2017-09-22 - Hiram)
 
     cd /hive/data/genomes/neoSch1
 
     # establish the config.ra file:
     ~/kent/src/hg/utils/automation/prepConfig.pl neoSch1 mammal seal \
        refseq/*_assembly_report.txt > neoSch1.config.ra
 
     # verify this looks OK:
 
     cat neoSch1.config.ra
 
 # config parameters for makeGenomeDb.pl:
 db neoSch1
 clade mammal
 genomeCladePriority 35
 scientificName Neomonachus schauinslandi
 commonName Hawaiian monk seal
 assemblyDate Jun. 2017
 assemblyLabel Johns Hopkins University
 assemblyShortLabel ASM220157v1
 orderKey 8055
 # mitochondrial sequence included in refseq release
 # mitoAcc NC_008421.1
 mitoAcc none
 fastaFiles /hive/data/genomes/neoSch1/ucsc/*.fa.gz
 agpFiles /hive/data/genomes/neoSch1/ucsc/*.agp
 # qualFiles none
 dbDbSpeciesDir seal
 photoCreditURL  https://www.linkedin.com/in/kentbackman/
 photoCreditName Kent Backman via WikiMedia Commons
 ncbiGenomeId 8042
 ncbiAssemblyId 1137021
 ncbiAssemblyName ASM220157v1
 ncbiBioProject 384558
 ncbiBioSample SAMN06841387
 genBankAccessionID GCF_002201575.1
 taxId 29088
 
     # verify sequence and AGP are OK:
     time (makeGenomeDb.pl -workhorse=hgwdev -dbHost=hgwdev -fileServer=hgwdev \
          -stop=agp neoSch1.config.ra) > agp.log 2>&1
     # real    2m9.177s
 
     # verify it ran OK:
     #   *** All done!  (through the 'agp' step)
 
     # then finish it off:
     time (makeGenomeDb.pl -workhorse=hgwdev \
        -dbHost=hgwdev -fileServer=hgwdev -continue=db \
            neoSch1.config.ra ) > db.log 2>&1
     # real    18m51.114s
 
     # incorrect name on the photo file, continuing:
     time (makeGenomeDb.pl -workhorse=hgwdev \
        -dbHost=hgwdev -fileServer=hgwdev -continue=trackDb \
            neoSch1.config.ra ) > trackDb.log 2>&1
     # real    0m7.484s
 
     # check in the trackDb files created and add to trackDb/makefile
     # temporary symlink until after masking
     ln -s `pwd`/neoSch1.unmasked.2bit /gbdb/neoSch1/neoSch1.2bit
 
 #############################################################################
 # cytoBandIdeo - (DONE - 2017-09-22 - Hiram)
     mkdir /hive/data/genomes/neoSch1/bed/cytoBand
     cd /hive/data/genomes/neoSch1/bed/cytoBand
     makeCytoBandIdeo.csh neoSch1
 
 ##############################################################################
 # cpgIslands on UNMASKED sequence (DONE - 2017-09-22 - Hiram)
     mkdir /hive/data/genomes/neoSch1/bed/cpgIslandsUnmasked
     cd /hive/data/genomes/neoSch1/bed/cpgIslandsUnmasked
 
     time (doCpgIslands.pl -dbHost=hgwdev -bigClusterHub=ku -buildDir=`pwd` \
        -tableName=cpgIslandExtUnmasked \
           -maskedSeq=/hive/data/genomes/neoSch1/neoSch1.unmasked.2bit \
              -workhorse=hgwdev -smallClusterHub=ku neoSch1) > do.log 2>&1
     # real    4m45.112s
 
     cat fb.neoSch1.cpgIslandExtUnmasked.txt
     # 34820932 bases of 2400839308 (1.450%) in intersection
 
 #############################################################################
 # running repeat masker (DONE - 2017-09-22 - Hiram)
     mkdir /hive/data/genomes/neoSch1/bed/repeatMasker
     cd /hive/data/genomes/neoSch1/bed/repeatMasker
     time  (doRepeatMasker.pl -buildDir=`pwd` \
         -bigClusterHub=ku -dbHost=hgwdev -workhorse=hgwdev \
         -smallClusterHub=ku neoSch1) > do.log 2>&1 &
     # RepeatMasker does not recognize the name: Neomonachus schauinslandi
 
     # try using the "Phocidae" name, the 'true seals' taxon:
     time  (doRepeatMasker.pl -buildDir=`pwd` -species="Phocidae" \
         -bigClusterHub=ku -dbHost=hgwdev -workhorse=hgwdev \
         -smallClusterHub=ku neoSch1) > do.log 2>&1 &
     # real    255m45.612s
 
     cat faSize.rmsk.txt
 # 2400839308 bases (53716773 N's 2347122535 real 1331243472 upper
 #	1015879063 lower) in 7872 sequences in 1 files
 # Total size: mean 304984.7 sd 3152710.5 min 1000 (NW_018732762v1)
 #	max 84771923 (NW_018734349v1) median 1998
 # %42.31 masked total, %43.28 masked real
 
     egrep -i "versi|relea" do.log
     # RepeatMasker version open-4.0.5
     #    January 31 2015 (open-4-0-5) version of RepeatMasker
     # CC   RELEASE 20140131;
 
     time featureBits -countGaps neoSch1 rmsk
     # 1016100984 bases of 2400839308 (42.323%) in intersection
     # real    0m44.536s
 
     # why is it different than the faSize above ?
     # because rmsk masks out some N's as well as bases, the count above
     #   separates out the N's from the bases, it doesn't show lower case N's
 
     # faster way to get the same result on high contig count assemblies::
     time hgsql -N -e 'select genoName,genoStart,genoEnd from rmsk;' neoSch1 \
         | bedSingleCover.pl stdin | ave -col=4 stdin | grep "^total"
     # total 1016100984.000000
     # real    0m36.665s
 
 ##########################################################################
 # running simple repeat (DONE - 2017-09-22 - Hiram)
 
     mkdir /hive/data/genomes/neoSch1/bed/simpleRepeat
     cd /hive/data/genomes/neoSch1/bed/simpleRepeat
     time (doSimpleRepeat.pl -buildDir=`pwd` -bigClusterHub=ku \
         -dbHost=hgwdev -workhorse=hgwdev -smallClusterHub=ku \
         -trf409=5 neoSch1) > do.log 2>&1 &
     # real    7m57.685s
 
     cat fb.simpleRepeat
     # 26133283 bases of 2400839308 (1.089%) in intersection
 
     # add to this simple repeat to rmsk:
     cd /hive/data/genomes/neoSch1
     twoBitMask neoSch1.rmsk.2bit \
         -add bed/simpleRepeat/trfMask.bed neoSch1.2bit
     #   you can safely ignore the warning about fields >= 13
     twoBitToFa neoSch1.2bit stdout | faSize stdin > faSize.neoSch1.2bit.txt
     cat faSize.neoSch1.2bit.txt
 # 2400839308 bases (53716773 N's 2347122535 real 1330493216 upper
 #	1016629319 lower) in 7872 sequences in 1 files
 # Total size: mean 304984.7 sd 3152710.5 min 1000 (NW_018732762v1)
 #	max 84771923 (NW_018734349v1) median 1998
 # %42.34 masked total, %43.31 masked real
 
     # reset symlink
     rm /gbdb/neoSch1/neoSch1.2bit
     ln -s `pwd`/neoSch1.2bit /gbdb/neoSch1/neoSch1.2bit
 
 #############################################################################
 # CREATE MICROSAT TRACK (DONE - 2017-09-22 - Hiram)
     ssh hgwdev
     mkdir /cluster/data/neoSch1/bed/microsat
     cd /cluster/data/neoSch1/bed/microsat
 
     awk '($5==2 || $5==3) && $6 >= 15 && $8 == 100 && $9 == 0 {printf("%s\t%s\t%s\t%dx%s\n", $1, $2, $3, $6, $16);}' \
        ../simpleRepeat/simpleRepeat.bed > microsat.bed
 
     hgLoadBed neoSch1 microsat microsat.bed
     # Read 23191 elements of size 4 from microsat.bed
 
 #############################################################################
 # ucscToINSDC table/track (DONE - 2017-09-22 - Hiram)
     # the sequence here is working for a 'refseq' assembly with a chrM
     # situation may be specific depending upon what is available in the assembly
 
     # refseq assembly came out after we ran this up.  Compute it ids:
     mkdir /hive/data/genomes/neoSch1/refseq
     cd /hive/data/genomes/neoSch1/refseq
     time rsync -L -a -P \
 rsync://ftp.ncbi.nlm.nih.gov/genomes/refseq/vertebrate_mammalian/Neomonachus_schauinslandi/all_assembly_versions/GCF_002201575.1_ASM220157v1/ ./
    # sent 631 bytes  received 2674936273 bytes  25597482.33 bytes/sec
    # total size is 2674606651  speedup is 1.00
    # real    1m44.075s
 
     mkdir /hive/data/genomes/neoSch1/refseq/idKeys
     cd /hive/data/genomes/neoSch1/refseq/idKeys
 
     faToTwoBit ../GCF_002201575.1_ASM220157v1_genomic.fna.gz refseq.neoSch1.2bit
     time (doIdKeys.pl -twoBit=`pwd`/refseq.neoSch1.2bit -buildDir=`pwd` \
 	refseqNeoSch1) > do.log 2>&1
     # real    12m15.428s
     cat refseqNeoSch1.keySignature.txt
     # 693347c3f7f03f2fde19c607fe7bb4ad
 
     mkdir /hive/data/genomes/neoSch1/bed/ucscToINSDC
     cd /hive/data/genomes/neoSch1/bed/ucscToINSDC
 
     # find accession for chrM
     grep chrM ../../neoSch1.agp
 # chrM    1       16754   1       O       NC_008421.1     1       16754   +
 
     # use that accession here:
     ~/kent/src/hg/utils/automation/ucscToINSDC.sh \
         ../../refseq/GCF_*structure/Primary_Assembly NC_008421.1
     # this is actually ucscToRefSeq
 
     # remove the duplicate contig name:
     grep -v NW_018729921 ucscToINSDC.txt | sort -k2,2 > ucscToRefSeq.txt
     rm -f ucscToINSDC.txt
 
     awk '{printf "%s\t%s\n", $2, $1}' ucscToRefSeq.txt | sort > refseqToUcsc.txt
 
     # again, remove the duplicate contig name, and substitute
     #  the INSDC name for the mito sequence
     grep -v "^#" ../../refseq/GCF*_assembly_report.txt | cut -f5,7 \
       | grep -v NW_018729921 | sed -e 's/na\b/AM181022.1/;' \
         | awk '{printf "%s\t%s\n", $2, $1}' \
            | sort > refseq.insdc.txt
     # the sed \b means match word
 
     awk '{printf "%s\t0\t%d\n", $1,$2}' ../../chrom.sizes \
          | sort > name.coordinate.tab
 
     # the tr commands avoid the problem of trying to use the -t argument
     # to the join command which doesn't accept -t'\t' but instead has
     # to use the unseen/can not copy command ctrl-v i
     join -2 2 refseq.insdc.txt ucscToRefSeq.txt | tr '[ ]' '[\t]' | sort -k3 \
        | join -2 3 name.coordinate.tab - | tr '[ ]' '[\t]' | cut -f1-3,5 \
            > ucscToINSDC.bed
     join -2 2 refseq.insdc.txt ucscToRefSeq.txt | tr '[ ]' '[\t]' | sort -k3 \
        | join -2 3 name.coordinate.tab - | tr '[ ]' '[\t]' | cut -f1-4 \
            > ucscToRefSeq.bed
 
     # verify chrM is correct:
     grep chrM *.bed
 ucscToINSDC.bed:chrM    0       16754   AM181022.1
 ucscToRefSeq.bed:chrM   0       16754   NC_008421.1
 
     # should be same line counts throughout:
     wc -l *
     #	7872 name.coordinate.tab
     #	7872 refseq.insdc.txt
     #	7872 refseqToUcsc.txt
     #	7872 ucscToINSDC.bed
     #	7872 ucscToRefSeq.bed
     #	7872 ucscToRefSeq.txt
 
     cut -f1 ucscToINSDC.bed | awk '{print length($0)}' | sort -n | tail -1
     # 26
     # use the 26 in this sed
     sed -e "s/21/26/" $HOME/kent/src/hg/lib/ucscToINSDC.sql \
          | hgLoadSqlTab neoSch1 ucscToINSDC stdin ucscToINSDC.bed
     cut -f1 ucscToRefSeq.bed | awk '{print length($0)}' | sort -n | tail -1
     sed -e "s/21/26/" $HOME/kent/src/hg/lib/ucscToINSDC.sql \
          | hgLoadSqlTab neoSch1 ucscToRefSeq stdin ucscToRefSeq.bed
     checkTableCoords neoSch1
     # should cover %100 entirely:
     featureBits -countGaps neoSch1 ucscToINSDC
     # 2400839308 bases of 2400839308 (100.000%) in intersection
     featureBits -countGaps neoSch1 ucscToRefSeq
     # 2400839308 bases of 2400839308 (100.000%) in intersection
 
 ##########################################################################
 # run up idKeys files for chromAlias (DONE - 2018-03-15 - Hiram)
     mkdir /hive/data/genomes/neoSch1/bed/idKeys
     cd /hive/data/genomes/neoSch1/bed/idKeys
 
     time (doIdKeys.pl -twoBit=/hive/data/genomes/neoSch1/neoSch1.unmasked.2bit -buildDir=`pwd` neoSch1) > do.log 2>&1 &
     # real    12m36.636s
 
     cat neoSch1.keySignature.txt
     #   cbeabb8faa38538267584374b47d8f3b
 
 ##########################################################################
 # add chromAlias table (DONE - 2017-09-22 - Hiram)
 
     mkdir /hive/data/genomes/neoSch1/bed/chromAlias
     cd /hive/data/genomes/neoSch1/bed/chromAlias
 
     hgsql -N -e 'select chrom,name,"refseq" from ucscToRefSeq;' neoSch1 \
         > ucsc.refseq.tab
     hgsql -N -e 'select chrom,name,"genbank" from ucscToINSDC;' neoSch1 \
         > ucsc.genbank.tab
 
     # verify chrM is correct:
     grep chrM *
 # ucsc.genbank.tab:chrM   AM181022.1      genbank
 # ucsc.refseq.tab:chrM    NC_008421.1     refseq
 
     awk '{printf "%s\t%s\t%s\n", $2,$1,$3}' ucsc.genbank.tab ucsc.refseq.tab \
         | sort > neoSch1.chromAlias.tab
 
     hgLoadSqlTab neoSch1 chromAlias ~/kent/src/hg/lib/chromAlias.sql \
         neoSch1.chromAlias.tab
 
 #########################################################################
-# fixup search rule for assembly track/gold table (DONE - 2017-09-23 - Hiram)
+# fixup search rule for assembly track/gold table (DONE - 2020-09-11 - Hiram)
 
     cd ~/kent/src/hg/makeDb/trackDb/seal/neoSch1
     # preview prefixes and suffixes:
-    hgsql -N -e "select frag from gold;" neoSch1 \
-      | sed -e 's/[0-9][0-9]*//;' | sort | uniq -c
-      1 NC_.1
-   7871 NINY.1
+    hgsql -N -e "select frag from gold;" neoSch1 | less
+      
+# Manually examine patterns in the new fakeAgp names:
+NW_[0-9]+(v[0-9]+[0-9_]*)?
+chrM
+chrX_NW_[0-9]+(v[0-9]+_random[0-9_]*)?
+
+    # implies a search rule of:
 
-    # implies a search rule of: 'N[CI][NY0-9_]+(\.[0-9]+)?'
+    '[chrMNWX_]+([0-9]+)?(v[0-9]+)?(_random)?([0-9_]*)?'
 
     # verify this rule will find them all or eliminate them all:
     hgsql -N -e "select frag from gold;" neoSch1 | wc -l
-    # 7872
+    # 46705
 
     hgsql -N -e "select frag from gold;" neoSch1 \
-       | egrep -e 'N[CI][NY0-9_]+(\.[0-9]+)?' | wc -l
-    # 7872
+       | egrep -e '[chrMNWX_]+([0-9]+)?(v[0-9]+)?(_random)?([0-9_]*)?' | wc -l
+    # 46705
 
     hgsql -N -e "select frag from gold;" neoSch1 \
-       | egrep -v -e 'N[CI][NY0-9_]+(\.[0-9]+)?' | wc -l
+     | egrep -v -e '[chrMNWX_]+([0-9]+)?(v[0-9]+)?(_random)?([0-9_]*)?' | wc -l
     # 0
 
     # hence, add to trackDb/rhesus/neoSch1/trackDb.ra
 searchTable gold
 shortCircuit 1
-termRegex N[CI][NY0-9_]+(\.[0-9]+)?
+termRegex [chrMNWX_]+([0-9]+)?(v[0-9]+)?(_random)?([0-9_]*)?
 query select chrom,chromStart,chromEnd,frag from %s where frag like '%s%%'
 searchPriority 8
 
-    git commit -m 'add gold table search rule refs #19859' trackDb.ra
+    git commit -m 'add gold table search rule refs #19883' trackDb.ra
 
     # verify searches work in the position box
 
 ##########################################################################
 ## WINDOWMASKER (DONE - 2017-09-22 - Hiram)
 
     mkdir /hive/data/genomes/neoSch1/bed/windowMasker
     cd /hive/data/genomes/neoSch1/bed/windowMasker
     time (doWindowMasker.pl -buildDir=`pwd` -workhorse=hgwdev \
         -dbHost=hgwdev neoSch1) > do.log 2>&1
     # real    159m30.920s
 
     # Masking statistics
     cat faSize.neoSch1.cleanWMSdust.txt
 # 2400839308 bases (53716773 N's 2347122535 real 1552520352 upper
 #	794602183 lower) in 7872 sequences in 1 files
 # Total size: mean 304984.7 sd 3152710.5 min 1000 (NW_018732762v1)
 #	max 84771923 (NW_018734349v1) median 1998
 # %33.10 masked total, %33.85 masked real
 
     cat fb.neoSch1.rmsk.windowmaskerSdust.txt
     # 545954348 bases of 2400839308 (22.740%) in intersection
 
 ##########################################################################
 # cpgIslands - (DONE - 2017-09-25 - Hiram)
     mkdir /hive/data/genomes/neoSch1/bed/cpgIslands
     cd /hive/data/genomes/neoSch1/bed/cpgIslands
     time (doCpgIslands.pl -dbHost=hgwdev -bigClusterHub=ku \
       -workhorse=hgwdev -smallClusterHub=ku neoSch1) > do.log 2>&1
     # real    4m51.761s
 
     cat fb.neoSch1.cpgIslandExt.txt
     # 30655113 bases of 2400839308 (1.277%) in intersection
 
 ##############################################################################
 # ncbiRefSeq gene track (DONE - 2018-03-15 - Hiram)
     mkdir /hive/data/genomes/neoSch1/bed/ncbiRefSeq
     cd /hive/data/genomes/neoSch1/bed/ncbiRefSeq
 
     time (~/kent/src/hg/utils/automation/doNcbiRefSeq.pl \
   -buildDir=`pwd` -bigClusterHub=ku \
   -fileServer=hgwdev -workhorse=hgwdev -smallClusterHub=ku -dbHost=hgwdev \
       refseq vertebrate_mammalian Neomonachus_schauinslandi \
          GCF_002201575.1_ASM220157v1 neoSch1) > do.log 2>&1
     # real    4m37.395s
 
     cat fb.ncbiRefSeq.neoSch1.txt
     # 45781082 bases of 2400839308 (1.907%) in intersection
 
 ##############################################################################
 # genscan - (DONE - 2017-09-25 - Hiram)
     mkdir /hive/data/genomes/neoSch1/bed/genscan
     cd /hive/data/genomes/neoSch1/bed/genscan
     time (doGenscan.pl -buildDir=`pwd` -workhorse=hgwdev -dbHost=hgwdev \
       -bigClusterHub=ku neoSch1) > do.log 2>&1
     # five were broken at window size of 2400000, they all worked at 2000000
     # real    18m8.224s
 
     # continuing:
     time (doGenscan.pl -buildDir=`pwd` -workhorse=hgwdev -dbHost=hgwdev \
       -continue=makeBed -bigClusterHub=ku neoSch1) > makeBed.log 2>&1
     # real    1m43.328s
 
     cat fb.neoSch1.genscan.txt
     #   53956919 bases of 2400839308 (2.247%) in intersection
 
     cat fb.neoSch1.genscanSubopt.txt
     #   50754244 bases of 2400839308 (2.114%) in intersection
 
 #############################################################################
 # augustus gene track (DONE - 2017-09-25 - Hiram)
 
     mkdir /hive/data/genomes/neoSch1/bed/augustus
     cd /hive/data/genomes/neoSch1/bed/augustus
     time (doAugustus.pl -buildDir=`pwd` -bigClusterHub=ku \
         -species=human -dbHost=hgwdev \
            -workhorse=hgwdev neoSch1) > do.log 2>&1
     # real    207m34.747s
 
     cat fb.neoSch1.augustusGene.txt
     # 47279177 bases of 2400839308 (1.969%) in intersection
 
 #############################################################################
 # Create kluster run files (DONE - 2017-09-25 - Hiram)
 
     # obtain 'real' numbers of this assembly:
     cd /hive/data/genomes/neoSch1
     head -1 faSize.neoSch1.2bit.txt
 # 2400839308 bases (53716773 N's 2347122535 real 1330493216 upper
 #	1016629319 lower) in 7872 sequences in 1 files
 
     # numerator is neoSch1 gapless bases "real"
 
     # denominator is hg19 gapless bases as reported by:
     #   featureBits -noRandom -noHap hg19 gap
     #     234344806 bases of 2861349177 (8.190%) in intersection
     # 1024 is threshold used for human -repMatch:
     calc \( 2347122535 / 2861349177 \) \* 1024
     # ( 2347122535 / 2861349177 ) * 1024 = 839.972100
 
     # ==> use -repMatch=800 according to size scaled down from 1024 for human.
     #   and rounded down to nearest 100
     cd /hive/data/genomes/neoSch1
     time blat neoSch1.2bit \
          /dev/null /dev/null -tileSize=11 -makeOoc=jkStuff/neoSch1.11.ooc \
         -repMatch=800
     #   Wrote 30552 overused 11-mers to jkStuff/neoSch1.11.ooc
     #	real    0m42.284s
 
     #	there are no non-bridged gaps
     #   check non-bridged gaps to see what the typical size is:
 #     hgsql -N \
 #         -e 'select * from gap where bridge="no" order by size;' neoSch1 \
 #         | sort -k7,7nr
     #   minimum size is 50000
 #     gapToLift -verbose=2 -minGap=50000 neoSch1 \
 # 	jkStuff/neoSch1.nonBridged.lft -bedFile=jkStuff/neoSch1.nonBridged.bed
 
 #########################################################################
 # lastz/chain/net swap from hg38 (DONE - 2018-03-16 - Hiram)
     # alignment to hg38
 
     cd /hive/data/genomes/hg38/bed/lastzNeoSch1.2017-09-25
 
     cat fb.hg38.chainNeoSch1Link.txt
     # 1586260720 bases of 3049335806 (52.020%) in intersection
     cat fb.hg38.chainSynNeoSch1Link.txt
     # 1515015853 bases of 3049335806 (49.683%) in intersection
     cat fb.hg38.chainRBestNeoSch1Link.txt
     # 1455520429 bases of 3049335806 (47.732%) in intersection
 
     # and for the swap:
     mkdir /hive/data/genomes/neoSch1/bed/blastz.hg38.swap
     cd /hive/data/genomes/neoSch1/bed/blastz.hg38.swap
 
     time (doBlastzChainNet.pl -verbose=2 \
       /hive/data/genomes/hg38/bed/lastzNeoSch1.2017-09-25/DEF \
         -swap -chainMinScore=3000 -chainLinearGap=medium \
           -workhorse=hgwdev -smallClusterHub=ku -bigClusterHub=ku \
             -syntenicNet) > swap.log 2>&1
     #  real    108m21.523s
 
     cat fb.neoSch1.chainHg38Link.txt
     # 1483929997 bases of 2400839308 (61.809%) in intersection
     cat fb.neoSch1.chainSynHg38Link.txt
     # 1446564285 bases of 2400839308 (60.252%) in intersection
 
     time (doRecipBest.pl -load -workhorse=hgwdev -buildDir=`pwd` neoSch1 hg38) \
         > rbest.log 2>&1
     # real    404m14.530s
 
     cat fb.neoSch1.chainRBestHg38Link.txt
     # 1455431042 bases of 2400839308 (60.622%) in intersection
 
 #########################################################################
 # lastz/chain/net swap from mm10 (DONE - 2018-03-16 - Hiram)
     # alignment on mm10
 
     cd /hive/data/genomes/mm10/bed/lastzNeoSch1.2017-09-25
     cat fb.mm10.chainNeoSch1Link.txt
     #	827926012 bases of 2652783500 (31.210%) in intersection
     cat fb.mm10.chainRBestNeoSch1Link.txt
     #   788489846 bases of 2652783500 (29.723%) in intersection
 
     mkdir /hive/data/genomes/neoSch1/bed/blastz.mm10.swap
     cd /hive/data/genomes/neoSch1/bed/blastz.mm10.swap
     time (doBlastzChainNet.pl -verbose=2 \
 	/hive/data/genomes/mm10/bed/lastzNeoSch1.2017-09-25/DEF \
 	-swap -syntenicNet \
 	-workhorse=hgwdev -smallClusterHub=ku -bigClusterHub=ku \
 	-chainMinScore=3000 -chainLinearGap=medium) > swap.log 2>&1
     #	real    59m27.809s
 
     cat fb.neoSch1.chainMm10Link.txt
     #	804021579 bases of 2400839308 (33.489%) in intersection
     cat fb.neoSch1.chainSynMm10Link.txt
     #   776155245 bases of 2400839308 (32.328%) in intersection
 
     time (doRecipBest.pl -load -workhorse=hgwdev neoSch1 mm10 \
       -buildDir=`pwd` -workhorse=hgwdev) > rbest.log 2>&1 &
     # real    242m31.157s
 
     cat fb.neoSch1.chainRBestMm10Link.txt
     # 787537751 bases of 2400839308 (32.803%) in intersection
 
 ##############################################################################
 # GENBANK AUTO UPDATE (DONE - 2017-09-25 - Hiram)
     ssh hgwdev
     cd $HOME/kent/src/hg/makeDb/genbank
     git pull
     # /cluster/data/genbank/data/organism.lst shows:
     # organism       mrnaCnt estCnt  refSeqCnt
     # Neomonachus schauinslandi   (there are no entries for this name)
 
     # edit etc/genbank.conf to add neoSch1 just after manLeu1
 
 # neoSch1 (Hawaiian monk seal - Neomonachus schauinslandi) taxId 29088
 neoSch1.serverGenome = /hive/data/genomes/neoSch1/neoSch1.2bit
 neoSch1.clusterGenome = /hive/data/genomes/neoSch1/neoSch1.2bit
 neoSch1.ooc = /hive/data/genomes/neoSch1/jkStuff/neoSch1.11.ooc
 neoSch1.lift = no
 neoSch1.refseq.mrna.native.pslCDnaFilter  = ${lowCover.refseq.mrna.native.pslCDnaFilter}
 neoSch1.refseq.mrna.xeno.pslCDnaFilter    = ${lowCover.refseq.mrna.xeno.pslCDnaFilter}
 neoSch1.genbank.mrna.native.pslCDnaFilter = ${lowCover.genbank.mrna.native.pslCDnaFilter}
 neoSch1.genbank.mrna.xeno.pslCDnaFilter   = ${lowCover.genbank.mrna.xeno.pslCDnaFilter}
 neoSch1.genbank.est.native.pslCDnaFilter  = ${lowCover.genbank.est.native.pslCDnaFilter}
 neoSch1.genbank.est.xeno.pslCDnaFilter    = ${lowCover.genbank.est.xeno.pslCDnaFilter}
 neoSch1.downloadDir = neoSch1
 neoSch1.refseq.mrna.native.load  = no
 neoSch1.refseq.mrna.xeno.load = yes
 # DO NOT NEED genbank.mrna.xeno except for human, mouse
 neoSch1.genbank.mrna.xeno.load = no
 neoSch1.genbank.mrna.native.load = no
 neoSch1.genbank.est.native.load = no
 neoSch1.perChromTables = no
 
 # And edit src/lib/gbGenome.c to add new species
 #	static char *neoSchNames[] = {"Neomonachus schauinslandi", NULL};
 #	    {"neoSch", neoSchNames},
 
     git commit -m \
   "Added neoSch1 Hawaiian monk seal/Neomonachus schauinslandi; refs #19883" \
        etc/genbank.conf src/lib/gbGenome.c
     git push
     # update /cluster/data/genbank/:
     make etc-update
     make install-server
 
     screen      #  control this business with a screen since it takes a while
     cd /cluster/data/genbank
 
     time ./bin/gbAlignStep -initial neoSch1
     #  logFile: var/build/logs/2017.09.25-10:31:15.neoSch1.initalign.log
     #   real    112m27.766s
 
 
     tail -2 var/build/logs/2017.09.25-10:31:15.neoSch1.initalign.log
 # hgwdev 2017.09.25-12:22:10 neoSch1.initalign: Succeeded: neoSch1
 # hgwdev 2017.09.25-12:23:43 neoSch1.initalign: finish
 
     #   To re-do, rm the dir first:
     #     /cluster/data/genbank/work/initial.neoSch1
 
     # load database when finished
     ssh hgwdev
     cd /cluster/data/genbank
     time ./bin/gbDbLoadStep -drop -initialLoad neoSch1
     # logFile: var/dbload/hgwdev/logs/2017.09.25-13:09:18.neoSch1.dbload.log
     # real    5m1.448s
 
     tail -1 var/dbload/hgwdev/logs/2017.09.25-13:09:18.neoSch1.dbload.log
     # hgwdev 2017.09.25-13:14:20 neoSch1.dbload: finish
 
     # enable daily alignment and update of hgwdev
     cd ~/kent/src/hg/makeDb/genbank
     git pull
     # add neoSch1 to:
     #   etc/align.dbs etc/hgwdev.dbs
     git add etc/align.dbs etc/hgwdev.dbs
     git commit -m \
 "Added neoSch1 - Hawaiian monk seal - Neomonachus schauinslandi refs #19883" \
 etc/align.dbs etc/hgwdev.dbs
     git push
     make etc-update
 
 ##############################################################################
 #  BLATSERVERS ENTRY (DONE - 2017-10-06 - Hiram)
 #	After getting a blat server assigned by the Blat Server Gods,
     ssh hgwdev
 
     hgsql -e 'INSERT INTO blatServers (db, host, port, isTrans, canPcr) \
 	VALUES ("neoSch1", "blat1c", "17880", "1", "0"); \
 	INSERT INTO blatServers (db, host, port, isTrans, canPcr) \
 	VALUES ("neoSch1", "blat1c", "17881", "0", "1");' \
 	    hgcentraltest
     #	test it with some sequence
 
 ##############################################################################
 # set default position to similar location as hg38 (DONE - 2017-10-06 - Hiram)
     hgsql -e \
 'update dbDb set defaultPos="NW_018734295v1:8131879-8151536" where name="neoSch1";' \
 	hgcentraltest
 
 ##############################################################################
 # all.joiner update, downloads and in pushQ - (DONE - 2018-03-22 - Hiram)
     cd $HOME/kent/src/hg/makeDb/schema
 
     ~/kent/src/hg/utils/automation/verifyBrowser.pl neoSch1
 # 61 tables in database neoSch1 - Hawaiian monk seal, Neomonachus schauinslandi
 # verified 58 tables in database neoSch1, 3 extra tables, 24 optional tables
 # NCBI RefSeq genes     10 optional tables
 # chainNetRBestHg38     3 optional tables
 # chainNetRBestMm10     3 optional tables
 # chainNetSynHg38       3 optional tables
 # chainNetSynMm10       3 optional tables
 # gapOverlap    1 optional tables
 # tandemDups    1 optional tables
 # 1     chainLepWed1    - extra table
 # 2     chainLepWed1Link        - extra table
 # 3     netLepWed1      - extra table
 # 5 genbank tables found
 # verified 29 required tables, 0 missing tables
 
     # fixup all.joiner until this is a clean output
     joinerCheck -database=neoSch1 -tableCoverage all.joiner
     joinerCheck -database=neoSch1 -times all.joiner
     joinerCheck -database=neoSch1 -keys all.joiner
 
     cd /hive/data/genomes/neoSch1
     time (makeDownloads.pl neoSch1) > downloads.log 2>&1
     # real    16m28.321s
 
     #   now ready for pushQ entry
     mkdir /hive/data/genomes/neoSch1/pushQ
     cd /hive/data/genomes/neoSch1/pushQ
     time (makePushQSql.pl -redmineList neoSch1) \
 	> neoSch1.pushQ.sql 2> stderr.out
     # real    3m53.420s
 
     # remove the tandemDups and gapOverlap from the listings:
     sed -i -e "/tandemDups/d" redmine.neoSch1.table.list
     sed -i -e "/Tandem Dups/d" redmine.neoSch1.releaseLog.txt
     sed -i -e "/gapOverlap/d" redmine.neoSch1.table.list
     sed -i -e "/Gap Overlaps/d" redmine.neoSch1.releaseLog.txt
 
     #   check for errors in stderr.out, some are OK, e.g.:
     # writing redmine listings to
     # redmine.neoSch1.file.list
     # redmine.neoSch1.table.list
     # redmine.neoSch1.releaseLog.txt
     # WARNING: neoSch1 does not have seq
     # WARNING: neoSch1 does not have extFile
 
     # verify the file listings are valid, should be no output to stderr:
     cat redmine.neoSch1.file.list \
         | while read L; do ls -ogL $L; done  > /dev/null
 
     # to verify the database.table list is correct, should be the same
     # line count for these two commands:
     wc -l redmine.neoSch1.table.list
     # 53 redmine.neoSch1.table.list
     awk -F'.' '{
 printf "hgsql -N -e \"show table status like '"'"'%s'"'"';\" %s\n", $2, $1
 }' redmine.neoSch1.table.list | while read L; do eval $L; done | wc -l
     # 53
 
     # add the path names to the listing files in the redmine issue
     # in the three appropriate entry boxes:
     ls `pwd`/redmine*
 
 /hive/data/genomes/neoSch1/pushQ/redmine.neoSch1.file.list
 /hive/data/genomes/neoSch1/pushQ/redmine.neoSch1.releaseLog.txt
 /hive/data/genomes/neoSch1/pushQ/redmine.neoSch1.table.list
 
 #########################################################################