198c9b8daecc44fbda6a6494c566c723920f030a
lrnassar
  Wed Mar 11 18:25:21 2026 -0700
Fixing a few hundred clear typos with the help of Claude. Some are less important in code comments, but majority of them are in user-facing places. I manually approved 60%+ of the changes and didn't see any that were an incorrect suggestion, at worst it was potentially uncessesary, like a code comment having cant instead of can't. No RM.

diff --git python/lib/ucscGb/qa/tables/trackUtils.py python/lib/ucscGb/qa/tables/trackUtils.py
index 68c55f3f09e..ec931c4fb6c 100644
--- python/lib/ucscGb/qa/tables/trackUtils.py
+++ python/lib/ucscGb/qa/tables/trackUtils.py
@@ -1,169 +1,169 @@
 import pipes
 from ucscGb.qa import qaUtils
 
 def getTrackType(db, track):
     """Looks for a track type via tdbQuery."""
     cmd = ["tdbQuery", "select type from " + db + " where track='" + track +
            "' or table='" + track + "'"]
     cmdout, cmderr, cmdreturncode = qaUtils.runCommandNoAbort(cmd)
     
     if cmdreturncode != 0:
         # keep command arguments nicely quoted
         cmdstr = " ".join([pipes.quote(arg) for arg in cmd])
         raise Exception("Error from: " + cmdstr + ": " + cmderr)
     if cmdout:
         trackType = cmdout.split()[1]
     else:
         trackType = None
     return trackType
 
 pslTypes = frozenset(["psl"])
 genePredTypes = frozenset(["genePred"])
 otherPositionalTypes = frozenset(["axt", "bed", "chain", "clonePos", "ctgPos", "expRatio", "maf",
                                   "netAlign", "rmsk", "sample", "wigMaf", "wig", "bedGraph",
                                   "chromGraph", "factorSource", "bedDetail", "pgSnp", "altGraphX",
                                   "ld2", "bed5FloatScore", "bedRnaElements", "broadPeak", "gvf",
                                   "narrowPeak", "peptideMapping"])
 pointerTypes = frozenset(["bigWig", "bigBed", "bigPsl", "bigGenePred", "bigMaf", "bigChain",
                           "halSnake", "bam", "vcfTabix"])
 
 # Instead of directly interfacing with sets above, can just use access functions
 def isPsl(trackType):
     """ Access function for pslTypes set"""
     if trackType in pslTypes:
         return True
 
 def isGenePred(trackType):
     """ Access function for genePredTypes set"""
     if trackType in genePredTypes:
         return True
 
 def isPositional(trackType):
     """ Access function for otherPositonalTypes set"""
     if trackType in otherPositionalTypes:
         return True
 
 def isPointer(trackType):
     """ Access function for pointerTypes set"""
     if trackType in pointerTypes:
         return True
 
 # group the types of positional tracks by the name of the column that contains the chrom
 # couldn't find any existing chromGraph tracks, so left it out for now
 chromTypes = frozenset(['bed', 'genePred', 'axt', 'clonePos', 'ctgPos', 'expRatio', 'maf', 'sample',
                         'wigMaf', 'wig', 'bedGraph', 'factorSource', 'bedDetail', 'Ld2',
                         'bed5FloatScore', 'bedRnaElements', 'broadPeak', 'gvf', 'narrowPeak',
                         'peptideMapping', 'pgSnp'])
 tNameTypes = frozenset(['chain', 'psl', 'altGraphX', 'netAlign'])
 genoNameTypes = frozenset(['rmsk'])
 
 def getChromCol(trackType):
     """Returns the name of the column that contains the chrom name, based on track type."""
     if trackType in chromTypes:
         return 'chrom'
     elif trackType in genoNameTypes:
         return 'genoName'
     elif trackType in tNameTypes:
         return 'tName'
     else:
         raise Exception("Can't find column name for track type " + trackType)
 
 def getChrStartEndCols(trackType):
     """Get columns names for chromosome, chromosome start and chromosome end
        based on track type"""
-    # genePred chromsome start/end col names are slightly different
+    # genePred chromosome start/end col names are slightly different
     # than others in chromType list
     if trackType == "genePred":
         colNames = ("chrom","txStart","txEnd")
     elif trackType in chromTypes:
         colNames = ("chrom", "chromStart", "chromEnd")
     elif trackType in genoNameTypes:
         colNames = ("genoName", "genoStart", "genoEnd")
     elif trackType in tNameTypes:
         colNames = ("tName", "tStart", "tEnd")
     else:
         raise Exception("Can't find chrom, start, end column names for track type " + trackType)
     return colNames
 
 def checkCanPack(db, table):
     """Check if a track can be set to pack"""
     visibility = "pack"
     canPackOut = qaUtils.callHgsql(db, "select canPack from trackDb where tableName='" + table + "'")
 
     if canPackOut != 1:
         visibility = "full"
 
     return visibility
 
 def getAttributeForTrack(attribute, db, track):
     """Uses tdbQuery to get an attribute where track or table == 'track' and removes label."""
     cmd = ["tdbQuery", "select " + attribute + " from " + db + " where table='" + track +
            "' or track='" + track + "'"]
     cmdout, cmderr = qaUtils.runCommand(cmd)
     return cmdout.strip(attribute).strip()
 
 def getParent(db, track):
     """Returns name of parent.  Looks for either 'parent' or 'subtrack' setting in trackDb."""
     parent = getAttributeForTrack("parent", db, track)
     if not parent:
         parent = getAttributeForTrack("subTrack", db, track)
     if parent:
         parent = parent.split()[0] # get rid of the "on" or "off" setting if present
     return parent
 
 def getLabels(db, track, labelType):
     """Returns labels of specified 'type' (shortLabel or longLabel) for a single track,
        its parent, and its superTrack. Excludes 'view' labels."""
 
     labels = []
     # need to add the first labels regardless of 'view' setting, which is inherited
     labels.append(getAttributeForTrack(labelType, db, track))
 
     parent = getParent(db, track)
     view = getAttributeForTrack("view", db, track)
     if view:
         viewParent = getParent(db, parent)
         labels.append(getAttributeForTrack(labelType, db, viewParent))
     elif parent:
         labels.append(getAttributeForTrack(labelType, db, parent))
 
 
     superTrack = getAttributeForTrack("superTrack", db, track)
     if superTrack:
         superTrackSplit = superTrack.strip().split(" ")
         superTrackName = superTrackSplit[0]
         labels.append(getAttributeForTrack(labelType, db, superTrackName))
     return labels
 
 def makeBedFromTable(db, table, whereOpt=""):
     """Make BED3 out of a table"""
     # Get chrom, start, and end column names
     trackType = getTrackType(db, table)
     columnNames = getChrStartEndCols(trackType)
 
     tableList = checkSplit(db, table)
 
     # whereOpt allows you to select only certain items from table, e.g. only unbridged gaps
     if whereOpt:
         whereOpt = " where " + whereOpt
     output = ""
     for tbl in tableList:
             hgsqlCmd = "select " + columnNames[0] + ", " + columnNames[1] + ", " \
                         + columnNames[2] + " from " + tbl + whereOpt
             hgsqlOut = qaUtils.callHgsql(db, hgsqlCmd)
             output += hgsqlOut
     return output
 
 def checkSplit(db, table):
     """Check if table is split by chromosome"""
     splitCheck = qaUtils.callHgsql(db, "show tables like '" + table + "'")
     splitCheck = splitCheck.strip()
 
     splitTableList = []
     if splitCheck == table:
         splitTableList.append(table)
     elif splitCheck == "":
         hgsqlTblsOut = qaUtils.callHgsql(db, "show tables like 'chr%" + table + "%'")
         splitTableList = hgsqlTblsOut.split('\n')
         splitTableList.remove("")
     return splitTableList