SHASTA(1)

๐Ÿ‘‘ shasta ๐Ÿ‘‘

okay bestie, so this is the manual page for shasta, the nanopore whole genome assembly tool, hanging out in the User Commands section of the manual. it's a whole โœจexperienceโœจ, so buckle up ๐Ÿ’–


๐ŸŒธ NAME ๐ŸŒธ

shasta โ€” nanopore whole genome assembly tool ๐Ÿงฌโœจ


๐Ÿ’… DESCRIPTION ๐Ÿ’…

so basically this is where we lay out all the options, bestie. there's two flavors: the ones you can only drop on the command line, and the ones you can put on the command line or tuck into the config file. iykyk ๐ŸŽ€

๐Ÿซถ Options allowed only on the command line:

  • -h, --help โ€” drops a help message. your lil "what do i do" bestie ๐Ÿ’–
  • -v, --version โ€” tells you which Shasta version you're running. identity check โœจ
  • --config arg โ€” the name of the configuration file. ๐ŸŽ€
  • --input arg โ€” names of the input files that have the reads in them. you gotta specify at least one, no skipping this one bestie ๐Ÿซ 
  • --assemblyDirectory arg (=ShastaRun) โ€” name of the output directory. heads up: if the command is assemble, this directory must not already exist. ๐Ÿ‘€
  • --command arg (=assemble) โ€” which command to run. has to be one of: assemble, saveBinaryData, cleanupBinaryData, explore, createBashCompletionScript. pick your fighter ๐Ÿ’…
  • --memoryMode arg (=anonymous) โ€” tells it whether the allocated memory is anonymous or backed by a filesystem. allowed values: anonymous, filesystem. ๐ŸŒˆ
  • --memoryBacking arg (=4K) โ€” the type of pages used to back memory. allowed values: disk, 4K, 2M (this one gives the best performance, slay). every combination of (memoryMode, memoryBacking) is allowed except (anonymous, disk). some combos need root privilege, which it grabs using sudo, and depending on your sudo setup that might pop a password prompt at you ๐Ÿ˜ญ
  • --threads arg (=0) โ€” number of threads. set it to 0 and it uses one thread per virtual processor. maximal vibes โšก
  • --exploreAccess arg (=user) โ€” sets the allowed access for --command explore. allowed values: user, local, unrestricted.
๐Ÿšจ DO NOT CHANGE FROM DEFAULT VALUE WITHOUT UNDERSTANDING THE SECURITY IMPLICATIONS. like fr fr, don't be chaotic about this one ๐Ÿ™ˆ
  • --port arg (=17100) โ€” the port the http server uses (for command --explore). ๐ŸŒ

๐ŸŽ€ Options allowed on the command line and in the config file:

  • --Reads.minReadLength arg (=10000) โ€” read length cutoff. anything shorter gets yeeted into the void ๐Ÿ—‘๏ธ
  • --Reads.noCache โ€” if you set this, it skips the Linux cache when loading reads. how? by specifying the O_DIRECT flag when opening the input files that hold reads. no caching, just vibes โœจ
  • --Reads.palindromicReads.skipFlagging โ€” skips flagging palindromic reads. but bestie listen โ€” Oxford Nanopore reads should be flagged for better results. so maybe don't ๐Ÿ™ˆ
  • --Reads.palindromicReads.maxSkip arg (=100) โ€” used for palindromic read detection. ๐Ÿ”
  • --Reads.palindromicReads.maxDrift arg (=100) โ€” used for palindromic read detection. ๐Ÿ”
  • --Reads.palindromicReads.maxMarkerFrequency arg (=10) โ€” used for palindromic read detection. ๐Ÿ”
  • --Reads.palindromicReads.alignedFractionThreshold arg (=0.1) โ€” used for palindromic read detection. ๐Ÿ”
  • --Reads.palindromicReads.nearDiagonalFractionThreshold arg (=0.1) โ€” used for palindromic read detection. ๐Ÿ”
  • --Reads.palindromicReads.deltaThreshold arg (=100) โ€” used for palindromic read detection. ๐Ÿ”
  • --Kmers.generationMethod arg (=0) โ€” the method used to generate marker k-mers: 0 = random, 1 = random but excluding globally overenriched ones, 2 = random but excluding ones that are overenriched even in a single read, 3 = read from file. pick your method ๐ŸŽฒ
  • --Kmers.k arg (=10) โ€” length of the marker k-mers (measured in run-length space). ๐Ÿ“
  • --Kmers.probability arg (=0.1) โ€” fraction of k-mers used as a marker. ๐ŸŽฏ
  • --Kmers.enrichmentThreshold arg (=100.) โ€” enrichment threshold for Kmers.generationMethod 1 and 2. ๐Ÿ”ฅ
  • --Kmers.file arg โ€” the absolute path of a file containing the k-mers to be used as markers, one per line. a relative path is not accepted, so don't try it ๐Ÿ’€. only used if Kmers.generationMethod is 3. ๐Ÿ“‚
  • --MinHash.version arg (=0) โ€” controls which version of the LowHash algorithm to use. can be 0 (default) or 1 (experimental ๐Ÿ‘ฉโ€๐Ÿ”ฌ).
  • --MinHash.m arg (=4) โ€” the number of consecutive markers that define a MinHash/LowHash feature. โœจ
  • --MinHash.hashFraction arg (=0.01) โ€” defines how low a hash has to be to be used with the LowHash algorithm. ๐Ÿ“‰
  • --MinHash.minHashIterationCount arg (=10) โ€” the number of MinHash/LowHash iterations, or 0 to let --MinHash.alignmentCandidatesPerRead control the number of iterations. ๐Ÿ”
  • --MinHash.alignmentCandidatesPerRead arg (=20) โ€” if --MinHash.minHashIterationCount is 0, MinHash iteration stops once the average number of alignment candidates each read is involved in hits this value. if --MinHash.minHashIterationCount is not 0, this one just sits there unused, no cap ๐Ÿ’…
  • --MinHash.minBucketSize arg (=0) โ€” the minimum bucket size used by the LowHash algorithm. ๐Ÿชฃ
  • --MinHash.maxBucketSize arg (=10) โ€” the maximum bucket size used by the LowHash algorithm. ๐Ÿชฃ
  • --MinHash.minFrequency arg (=2) โ€” the minimum number of times a pair of reads must be found by the MinHash/LowHash algorithm before it counts as a candidate alignment. ๐Ÿ”Ž
  • --MinHash.allPairs โ€” skips the MinHash algorithm entirely and marks all pairs of reads as alignment candidates, in both orientations. โš ๏ธ only use this for experimentation on very small runs, because it is very time consuming. like, don't. it's giving "i have all weekend" energy ๐Ÿ˜ญ
  • --Align.alignMethod arg (=3) โ€” the alignment method used to create the read graph and the marker graph. 0 = old Shasta method, 1 = SeqAn (slow ๐ŸŒ), 3 = banded SeqAn. โœจ
  • --Align.maxSkip arg (=30) โ€” the maximum number of markers an alignment is allowed to skip. โญ๏ธ
  • --Align.maxDrift arg (=30) โ€” the maximum amount of marker drift an alignment is allowed to tolerate between successive markers. ใ€ฐ๏ธ
  • --Align.maxTrim arg (=30) โ€” the maximum number of unaligned markers tolerated at the beginning and end of an alignment. โœ‚๏ธ
  • --Align.maxMarkerFrequency arg (=10) โ€” marker frequency threshold. markers more frequent than this value in either of two oriented reads being aligned get discarded and are not used to compute the alignment. ๐Ÿšฎ
  • --Align.minAlignedMarkerCount arg (=100) โ€” the minimum number of aligned markers for an alignment to actually be used. โœ…
  • --Align.minAlignedFraction arg (=0) โ€” the minimum fraction of aligned markers for an alignment to be used. โœ…
  • --Align.matchScore arg (=6) โ€” match score for marker alignments (only used for alignment methods 1 and 3). ๐Ÿ’š
  • --Align.mismatchScore arg (=-1) โ€” mismatch score for marker alignments (only used for alignment methods 1 and 3). โค๏ธ
  • --Align.gapScore arg (=-1) โ€” gap score for marker alignments (only used for alignment methods 1 and 3). ๐Ÿ•ณ๏ธ
  • --Align.downsamplingFactor arg (=0.10000000000000001) โ€” downsampling factor (only used for alignment method 3). ๐Ÿ“‰
  • --Align.bandExtend arg (=10) โ€” how much to extend the downsampled band (only used for alignment method 3). ๐ŸŽˆ
  • --Align.sameChannelReadAlignment.suppressDeltaThreshold arg (=0) โ€” if this is not zero, alignments between reads from the same nanopore channel that are close in time get suppressed. it checks the "read" meta data fields from the FASTA or FASTQ header. if their difference, in absolute value, is less than this option's value, the alignment is suppressed. this can help you dodge assembly artifact ๐Ÿ›ก๏ธ. this check only happens if the two reads have identical meta data fields "runid", "sampleid", and "ch". if any of those meta data fields are missing, the check is suppressed and this option does absolutely nothing ๐Ÿ™ƒ
  • --Align.suppressContainments โ€” suppresses containment alignments, meaning alignments where one read is entirely contained inside another read, except possibly for up to maxTrim markers at the beginning and end. ๐Ÿซ‚
  • --ReadGraph.creationMethod arg (=0) โ€” the method used to create the read graph (0 = undirected, which is the default; 1 = directed, experimental ๐Ÿ‘ฉโ€๐Ÿ”ฌ).
  • --ReadGraph.maxAlignmentCount arg (=6) โ€” the maximum number of alignments to keep for each read. ๐Ÿ—‚๏ธ
  • --ReadGraph.minComponentSize arg (=100) โ€” the minimum size (number of oriented reads) of a connected component of the read graph that gets kept. heads up, this is currently ignored ๐Ÿ’€
  • --ReadGraph.maxChimericReadDistance arg (=2) โ€” used for chimeric read detection. ๐Ÿงช
  • --ReadGraph.crossStrandMaxDistance arg (=6) โ€” maximum distance (in edges) for flagCrossStrandReadGraphEdges. set it to zero to entirely suppress flagCrossStrandReadGraphEdges. ๐Ÿšซ
  • --ReadGraph.containedNeighborCount arg (=6) โ€” maximum number of alignments to keep for each contained read (only used when creationMethod is 1). ๐Ÿ“ฆ
  • --ReadGraph.uncontainedNeighborCountPerDirection arg (=3) โ€” maximum number of alignments to keep in each direction (forward, backward) for each uncontained read (only used when creationMethod is 1). โ†”๏ธ
  • --ReadGraph.removeConflicts โ€” removes conflicts from the read graph. โš ๏ธ experimental โ€” do not use. seriously, bestie, don't ๐Ÿ™ˆ
  • --MarkerGraph.minCoverage arg (=10) โ€” minimum number of markers for a marker graph vertex. ๐Ÿ”ป
  • --MarkerGraph.maxCoverage arg (=100) โ€” maximum number of markers for a marker graph vertex. ๐Ÿ”บ
  • --MarkerGraph.lowCoverageThreshold arg (=0) โ€” used during approximate transitive reduction. marker graph edges with coverage lower than this value are always marked as removed, regardless of reachability. โœ‚๏ธ
  • --MarkerGraph.highCoverageThreshold arg (=256) โ€” used during approximate transitive reduction. marker graph edges with coverage higher than this value are never marked as removed, regardless of reachability. ๐Ÿ›ก๏ธ
  • --MarkerGraph.maxDistance arg (=30) โ€” used during approximate transitive reduction. ๐Ÿ“
  • --MarkerGraph.edgeMarkerSkipThreshold arg (=100) โ€” used during approximate transitive reduction. โญ๏ธ
  • --MarkerGraph.pruneIterationCount arg (=6) โ€” number of prune iterations. ๐ŸŒฟ
  • --MarkerGraph.simplifyMaxLength arg (=10,100,1000) โ€” maximum lengths (in markers) used at each iteration of simplifyMarkerGraph. ๐Ÿ“
  • --MarkerGraph.crossEdgeCoverageThreshold arg (=0) โ€” experimental. cross edge coverage threshold. if this isn't zero, assembly graph cross-edges with average edge coverage less than this value get removed, together with the corresponding marker graph edges. a cross edge is defined as an edge v0->v1 with out-degree(v0)>1, in-degree(v1)>1. ๐Ÿ‘ฉโ€๐Ÿ”ฌ
  • --MarkerGraph.refineThreshold arg (=0) โ€” experimental. length threshold, in markers, for the marker graph refinement step, or 0 to turn the refinement step off. ๐Ÿ”ฌ
  • --MarkerGraph.reverseTransitiveReduction โ€” performs approximate reverse transitive reduction of the marker graph. ๐Ÿ”„
  • --Assembly.crossEdgeCoverageThreshold arg (=3) โ€” maximum average edge coverage for a cross edge of the assembly graph to be removed. โœ‚๏ธ

...bestie this page keeps going, don't go anywhere ๐Ÿ’–

  • --Assembly.markerGraphEdgeLengthThresholdForConsensus arg (=1000) โ€” bestie this one is the vibe check for assembling those long marker graph edges โœจ it controls how that assembly goes down, and the default is 1000 in case you were wondering ๐ŸŽ€
  • --Assembly.consensusCaller arg (=Bayesian:guppy-2.3.5-a) โ€” picks the consensus caller for repeat counts ๐Ÿ‘‘ the default is literally Bayesian:guppy-2.3.5-a and no I did not make that name up ๐Ÿ’… wanna know what other choices exist? go read the documentation, it's all in there ๐Ÿ“–
  • --Assembly.storeCoverageData โ€” not me asking for the coverage data to be stored in binary format ๐Ÿ™ˆ that's literally all it does, it's a request, no arg, no drama ๐ŸŒธ
  • --Assembly.storeCoverageDataCsvLengthThreshold arg (=0) โ€” okay so this sets the minimum length of an assembled segment that has to be hit before coverage data gets stored in csv format โญ default is 0, and heads up: when it's 0, no coverage data in csv format is stored at all, zero, nada, none ๐Ÿ˜ญ
  • --Assembly.writeReadsByAssembledSegment โ€” this one asks shasta to write out the reads that contributed to assembling each segment ๐Ÿซถ like a little receipt of who did what, love that for us ๐Ÿงš
  • --Assembly.detangleMethod arg (=0) โ€” โš ๏ธ experimental โš ๏ธ this specifies the method used to detangle the assembly graph and the options are:
    • 0 = no detangling ๐Ÿ™…
    • 1 = basic detangling โœจ

default is 0, so if you do nothing, nothing gets detangled, iconic honestly ๐Ÿ’…


and that's a wrap on this one, bestie ๐ŸŽ€ this page comes from shasta, dated August 2020, sitting pretty in section SHASTA(1) of the manual ๐Ÿฆ‹ go forth and assemble, you absolute main character ๐Ÿ‘‘๐Ÿ’–

๐Ÿ“ฆ where this page comes from