b7c8d4de3cc60aea8cae6463077c4af70d6867ed
max
  Wed Jul 16 15:08:23 2025 -0700
skipping quickgenes if markers not found

diff --git src/cbPyLib/cellbrowser/cellbrowser.py src/cbPyLib/cellbrowser/cellbrowser.py
index a62a548..4d5493b 100755
--- src/cbPyLib/cellbrowser/cellbrowser.py
+++ src/cbPyLib/cellbrowser/cellbrowser.py
@@ -7088,30 +7088,35 @@
     else:
         logging.info("identical and same size, not copying %s to %s" % (inFname, outFname))
 
 def copyTsvMatrix(matrixFname, outMatrixFname):
     " copy one file to another, but only if both look like valid input formats for cbBuild "
     if isMtx(matrixFname) or ".h5" in matrixFname:
         logging.error("Cannot copy %s to %s, as not a text-based file like tsv or csv. You will need to do the conversion yourself manually or with cbTool.")
         return
 
     copyFileIfDiffSize(matrixFname, outMatrixFname)
 
 def generateQuickGenes(outDir):
     " make a quickGenes.tsv in outDir from markers.tsv "
     outFname = join(outDir, "quickGenes.tsv")
     markerFname = join(outDir, "markers.tsv")
+
+    if not isfile(markerFname):
+        logging.warning("Cannot find marker file %s, so not generating quick genes file" % markerFname)
+        return
+
     logging.info("Generating %s from %s" % (outFname, markerFname))
 
     clusters = parseMarkerTable(markerFname, None)[0]
 
     genesPerCluster = int(round(18 / len(clusters))) # guess a reasonable number of genes per cluster, ~ 18 genes in total
     maxGenes = None
     if genesPerCluster == 0:
         genesPerCluster = 1
         maxGenes = 30
 
     quickGenes = defaultdict(list)
     for clusterName, rows in iterItems(clusters):
         for row in rows[:genesPerCluster]:
             sym = row[1]
             quickGenes[sym].append(clusterName)