MitoPilot 1.5.4
Released 2026-08-31. Container: macguigand/mitopilot:1.5.4
New Features
This release is about user-supplied assemblies. MitoPilot can now take a whole draft genome rather than a finished mitogenome, find the mitochondrial contig(s) in it, and circularize them if evidence is present.
Finding the mitogenome in a whole assembly
- Point MitoPilot at a FASTA holding a whole assembly, thousands or millions of contigs, and it will locate the mitochondrial contigs before anything else runs. Off by default; enable with
new_project_userAsmb(find_mitogenome = TRUE). You must also supply a MitoFinder database for your clade. - Contigs are screened against a bundled metazoan mitogenome database, the best candidates are confirmed by annotating them, and only confirmed contigs continue through the pipeline. A sample with no confirmed mitochondrial contig is flagged and stops there; the rest of the batch carries on.
- Nuclear insertions (NUMTs) are filtered out by requiring the match to cover a large fraction of the contig.
- A sample carrying more than one species’ mitogenome can return each mitogenome it finds, so you can review them and decide which to drop.
- A new Mito Search column reports the outcome, and the evidence behind each contig it kept or dropped.
- The search is built for large inputs: a full genome assembly of 1.4 million contigs reduces to its single mitochondrial contig in under four minutes.
Circularizing user-supplied assemblies
- Assemblers often report a circular mitogenome as a linear contig whose end repeats its start. MitoPilot can now trim that redundant overlap and circularize the sequence during the Assemble module. Off by default; enable with
new_project_userAsmb(attempt_circularization = TRUE). - When raw reads are available, reads must span the new junction before the assembly is called circular, so a repeat is not mistaken for a real circle.
- Circularization is attempted for each contig when a sample has multiple mitochondrial contigs.
- A new Circularization column reports the outcome. Clicking it shows the overlap alignment alongside the read depth across the seam.
Scaffold joining for user-supplied assemblies
- A fragmented single-path assembly can now be ordered against its BLAST reference into one joined sequence, the same step the regular pipeline already had. Off by default; enable with
new_project_userAsmb(join_scaffolds = TRUE). - Samples whose contigs match different reference mitogenomes are left separate for review, so a contaminated sample is never spliced together.
- A new Scaffold Join Notes column reports what the join did, or why it was refused.
- Redo join in pipeline, a button in a sample’s assembly details window, queues a fresh join for the next pipeline update. It becomes Cancel queued pipeline join while one is waiting, and says why if a sample cannot be queued.
- Both the column and the button appear in every project, not just user-assembly ones.
Fragmented assemblies are annotated contig by contig
- A user assembly split across several contigs could not be locked for annotation until you ignored all but one contig, and only that contig was ever annotated. Every contig is now its own annotation unit and is annotated, curated, and exported like any other sequence.
Ambiguous bases are counted and shown
- The Assemble table of a user-assembly project has a new Ambig. Bases column, right after the assembly length, counting the bases that are not A, C, G, or T. It is filled in for samples with a single active contig; a sample with several contigs shows the count per contig in the assembly details window instead.
- The annotation alignment viewer warns when the gene on screen contains ambiguous bases, for protein-coding genes and rRNAs alike. The count updates as you nudge the gene ends with the +/- buttons.
Topology is now optional
- The
Topologycolumn in the mapping file is optional. Leave it out, or leave a cell blank, and a single-contig assembly is treated as linear. An earlier release refused to build the project without the column. - It applies only to single-contig assemblies. An assembly holding more than one contig is recorded as
multiand whatever you declared is ignored; declaring such a samplecircularprints a warning. Each contig then carries its own topology, which staysunknownunless circularization is switched on, and anunknowncontig is handled as linear. - The same rules apply to samples you add to an existing project.
Test project for user assemblies
-
new_test_project_userAsmb()builds a ready-to-run project from nine user-supplied assemblies cut from real data, with examples of linear, circular, not-yet-circularized, and multi-contig assemblies.
Default MitoFinder reference database
- New projects now assemble against a ten-species fish mitogenome sampler rather than a single zebrafish record. This applies to every new project, regular and user-assembly alike. Existing projects keep the database they were created with. Pass
mitofinder_dbto use a database for your own clade.
Bug Fixes
-
A gene containing ambiguous bases no longer kills the sample or the app. A protein-coding gene holding bases that are not A, C, G, or T was refused outright by translation, so curation died partway through with an unreadable error, and clicking the +/- START or STOP codon buttons in the annotation editor hung the app behind a spinner that never cleared. Ambiguous bases arrive both from the
Nspacers MitoPilot inserts when joining scaffolds and from consensus assemblies called against a reference, which carry IUPAC codes at uncertain sites. Those codons are now translated to an amino acid where only one is possible and toXotherwise, and the gene is flagged with anambiguous bases in CDSwarning for review. - An error while editing codons no longer freezes the annotation window. Anything that went wrong while walking the START or STOP codon left the “Updating alignment, hold tight…” overlay on screen forever and no other sample would open. The overlay now clears and the problem is reported.
- The Assemble table reports the lengths of the contigs that are actually active. The length and scaffold counts were a snapshot taken before any join, so a joined sample kept describing the fragments it replaced, and ignoring or restoring a contig afterwards changed nothing. They are now refreshed whenever a join, an edit, or an ignore toggle changes what is active, and equal-length fragments are listed individually rather than collapsed into one value that looks like a total.
-
Gaps in a joined assembly are declared on export. Every run of
Ns that MitoPilot inserted when joining fragments is written as agapfeature carrying its estimated length, however short the run. Runs ofNs that arrived with your own sequence are left alone, since they may be ambiguous base calls rather than gaps. Any coding feature containing unknown bases carries a note saying how many. -
A junction that cannot be sized is no longer padded. MitoPilot used to insert a fixed 100
Ns where the reference could not estimate a gap. NCBI expects the number ofNs to be the estimated length, so such a sample is now left fragmented with a note; its contigs can be submitted as several sequences under one BioSample. This applies to regular projects too, so a sample that joined under an earlier release may now be left in pieces, with the reason given in the Scaffold Join Notes column. If you joined a fragmented assembly under an earlier release, redo the join before exporting: MitoPilot cannot recognize the old fixed padding and will not declare those gaps. -
A contig with no read coverage no longer stops annotation. Every base of an uncovered contig looked masked, so coverage trimming cut the contig down to 50 bp and annotation then failed with an unreadable error that ended the run. Such contigs are now kept whole and carry a
no read coverage: trim skippednote. - A contig with no genes no longer stops the run. MITOS2 writes an empty result file for a contig it finds nothing on, and reading that file failed. Now that every contig is annotated on its own, a contig with no genes is normal and simply returns no annotations.
-
The combined export files are written by R rather than shell commands.
catandcpare not available everywhere and broke on paths containing a space, so a submission group’s combined FASTA and feature table could go missing with no error. - The redo scaffold join button is no longer blocked on every sample. The check for a recorded BLAST reference was looking the sample up by an ID it never read, so it found nothing and reported that no sample had a reference.
- Export reads each record’s own topology rather than applying one value across a mixed unit.
- The Annotate update dialog counts sequences, not samples, which is what it has always queued.
Documentation
- User-assembly material now has its own article, covering the mitogenome search, circularization, and scaffold joining, with the FAQ and reference index updated to match.
Note Projects created with an earlier release should be updated with MitoPilot::backwards_compatibility(). Give it your executor, for example backwards_compatibility(executor = "slurm"). It adds the new database fields and rebuilds your project .config from that executor’s template, so re-apply any hand edits afterwards. The rebuild matters on a cluster: the new mitogenome-search and circularization steps have their own memory and scheduler settings, and a .config written by an earlier release does not have them. A project pinned to a custom container image is left alone by the update; run backwards_compatibility() first, then edit the container line in the project .config by hand. The new Assemble steps will not run until you do.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.5.3…1.5.4
MitoPilot 1.5.3
Released 2026-08-21. Container: macguigand/mitopilot:1.5.3
Bug Fixes
Origin-spanning features on circular assemblies
A feature that runs across the origin of a circular assembly is stored with its start position after its end position. Nothing downstream expected that, so a single wrapping feature could stop a project outright.
- Curation no longer crashes on a wrapping feature. Every boundary adjustment handed those coordinates straight to a sequence-extraction call that refuses a start after an end, so the whole curation step exited with an error and the run stopped. Sequence extraction and length are now wrap-aware, and extension or trimming may cross the origin on a circular contig. Linear assemblies behave exactly as before.
-
Export writes a wrapping feature as two intervals in the submission table. A single line spanning the origin does not mean “wraps” to table2asn, it means “minus strand”, so the feature was being submitted backwards. Also fixed in export: the 3’ end of a
transl_except, minus-strand exon coordinates in the GFF, and a crash in the PCG outlier review when an exon wrapped. - Validation checks are circular-aware. Overlap, containment, and length tests measured a wrapping feature as if it ran the long way around the genome, so genuine overlaps went unreported and non-overlapping features were flagged.
- The control region keeps its extension when a neighbour wraps. An origin-adjacent OH call is now bounded by the wrapping feature rather than by the contig edge. Three test samples were finishing with a stunted control region and a spurious “below minimum length” warning.
- The annotation editor handles wrapping throughout: nudging boundaries, copy FASTA, rRNA alignment, the boundary viewer, the zoom track, the linearize guard, and merge / un-merge.
- Rotating an assembly now warns when the requested start gene is not present, and when the new origin would cut through a feature.
- MITOS2 annotations use the right contig length. On a multi-contig unit the first contig’s length was applied to every contig, which mis-placed wrap calculations on all the others.
Database writes
- Scaffold mappings could be wiped. The delete and insert halves of a scaffold-mapping update were sent as two independent database operators with no guaranteed ordering, so the delete could land last and leave the table empty. Both now run inside a single transaction from the pipeline driver.
HPC
- NOAA SEDNA memory now scales with the retry attempt, matching every other cluster profile. A retry was re-requesting the same memory that had just failed, so a step that ran out of memory would fail again identically.
Container builds
- A stale package archive can no longer be shipped in the image. The Dockerfile picks up the package archive by name order, so a leftover build of an older version won out over the new one and the container quietly shipped the wrong MitoPilot. All three deploy scripts now clear old archives first.
Documentation
- The website has been rewritten and reorganized: Get Started is now a full tutorial built around the bundled test project, the README is a landing page with installation moved to its own article, and the curation documentation is clade-neutral with the ruleset chosen in the app rather than hand-written.
- The article on handling difficult assemblies replaces the old multiple-assemblies page, the reference index is grouped by topic, screenshots are regenerated for the current app, and a citation file is included with the package.
- A maintainer guide for building the container was added, and the legacy GenBank download script was retired.
Internal
-
run_app()is no longer exported.MitoPilot()is the documented way to start the app and passes everything through, so nothing changes for users. - The documentation build is capped at 20 minutes so a stalled runner fails fast instead of hanging for over an hour.
Note To update older MitoPilot projects, please run MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.5.2…1.5.3
MitoPilot 1.5.2
Released 2026-08-14. Container: macguigand/mitopilot:1.5.2
New Features
Local BLAST database
- MitoPilot now finds each sample’s closest reference mitogenome by searching a local BLAST database packaged in the container, rather than querying NCBI over the network. The database holds all annotated metazoan mitogenomes in GenBank (134,560 sequences).
- The search takes 1-2 seconds per sample instead of minutes, needs no internet connection and no NCBI API key, and is reproducible: a remote search returns whatever GenBank held that day, so the same project could pick a different reference on a re-run.
- Verified against saved remote results: accession, percent identity, and query coverage are identical for every sample in the test project.
- Annotations for the winning reference are still fetched from NCBI, so an internet connection is still required for that step.
New BLAST options
- Remote BLAST searches NCBI over the network instead of the bundled database, for reaching sequences the local database does not contain.
- Fall back to remote BLAST when no local hit (on by default) retries a sample against NCBI when the local search finds nothing, which covers lineages with no mitogenome in the database. Turn it off for strictly offline, reproducible runs.
-
Restrict search to taxon IDs limits the search to one or more numeric NCBI taxon IDs (for example
7711for Chordata). The same restriction is applied if the remote fallback runs. - The Entrez query field now applies only to remote searches and is shown only when Remote BLAST is ticked. Existing projects that set a custom Entrez query are switched to Remote BLAST when the project is upgraded, so they keep behaving as before.
Version and database provenance
- The BLAST options window shows when the bundled database was built and how many sequences it holds, so it is clear which reference set produced a project’s assignments. The build date is also recorded alongside each sample’s results.
- Opening a project whose container version does not match the installed MitoPilot now shows a warning naming both versions. It does not block the app: the project still works, it simply runs the pipeline code baked into the older image.
Scaffold-join editor
- The base-pair alignment zoom now opens windows up to 1000 bp, up from the previous cap. This is the widest window that renders on every display.
- Row labels stay in a fixed panel in the base-pair zoom, so it remains clear which scaffold each row belongs to while the alignment scrolls sideways.
- Build joined assembly now shows a progress spinner while Path 0 is being built, instead of appearing to hang.
Bug Fixes
BLAST results
- BLAST hits could be silently lost. The assembly record and the BLAST result were written to the project database by two independent processes with no guaranteed ordering, so a hit could be overwritten moments after it was stored. The sample then showed a reference in the Assemble panel but a blank one in Annotate, with nothing reporting a problem. Observed on one sample of fourteen in a single run.
- A path with no BLAST hit is now scored as one. A missing hit was treated as missing information and simply left out of an assembly path’s score, so a path that matched nothing was never penalized and could outrank a path with a genuine, if distant, match. For the same reason the “possible NUMT/contaminant” flag never fired for those paths, which is exactly where it is most useful.
- Automatic scaffold joining is no longer cancelled by a no-hit scaffold. A scaffold that matched nothing was counted as a second, disagreeing reference, so MitoPilot held back the join and left the sample fragmented without explanation.
Annotation editing
- The synteny plot no longer mis-registers after editing an assembly. Linearize left the cached reference alignment untouched, so the plot was silently shifted by the rotation offset, and Trim deleted the alignment with nothing rebuilding it. Both operations now repair the cached alignment exactly, and an alignment that cannot be repaired is recomputed on demand when the window opens.
- The Trim control re-measures after annotation edits. Deleting, restoring, merging, or adjusting the boundaries of an annotation now updates the unannotated flanks shown in the Trim control and its confirmation dialog, which previously kept reporting the pre-edit measurement.
- The PCG outlier review no longer shows the pre-edit alignment after returning through Back to Review. The review now decides for itself what changed by comparing against the project database, and recomputes only the genes that actually moved.
- Mouse-wheel scrolling is no longer translated into horizontal scrolling on the coverage map and synteny views.
App
- Fixed a crash when opening annotation options. Ignoring every scaffold of a sample and then un-ignoring one left that sample with no parameter sets assigned, showing “undefined” for the annotate, curate, and ORF sets; clicking one closed the app. Affected samples are repaired automatically.
HPC
- Fixed the reference fetch step being killed by scheduler memory limits. On nodes with many cores, R reserved several GB of address space before doing any work, which schedulers that cap address space (such as SGE on Hydra) treated as an overrun, killing the task before it made a single request. Raising the memory request did not help, because the reservation grows with the node’s core count. All R pipeline steps are now capped to a single compute thread.
- The NMNH Hydra profile now uses a fixed memory reservation for its annotation steps rather than one that scaled with the retry attempt.
Note To update older MitoPilot projects, please run MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database (including the new assembly_backup table) and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.5.1…1.5.2
MitoPilot 1.5.1
Released 2026-07-29. Container: macguigand/mitopilot:1.5.1
New Features
Trim unannotated assembly ends
- New Trim unannotated ends control in the annotate-details window cuts a linear assembly back to its outermost annotated feature. Export already performed this cut in memory for linear units; doing it in the app makes it visible, undoable, and applied to everything the app shows rather than only to what is submitted. Because the boundary is a feature boundary, no feature is ever dropped or truncated, so feature counts, spans, and gene order are unchanged.
- New Restore assembly control undoes every in-app assembly edit for a unit, returning the sequence, feature model, coverage track, and annotate-stage files to the pipeline’s own output. Linearize is now covered by the same undo.
- Snapshots are stored in a new
assembly_backuptable; a row exists only while a unit carries an un-restored edit. - Guarded throughout: circular assemblies must be linearized first, the coverage track must line up with the assembly or the trim is refused rather than desynchronizing them, user-supplied multi-contig units are refused outright, and soft-deleted annotations stay tombstoned at position zero. Any edit drops the unit’s cached
blast_ref_alignment, which WF1 regenerates on the next run, so the synteny view can never silently mis-register against an edited sequence.
Stale assembly-output detection
- ASSEMBLE publishes to
out/<ID>/assemble/<assemble_opts>/, so the option-set name doubles as a directory name and every downstream stage rebuilds that path. Reassigning a sample to a different parameter set after it has assembled left the published output under the old name, and nothing noticed: WF2 annotate / curate / ORF, the coverage viewer, and the output-folder button all pointed somewhere that was never created, so runs either failed obscurely or completed with no reference hits at all. - MitoPilot now detects this and reports it at three points: on app startup (a warning, keeping the app open, since the fix requires the app), at lock time (the affected samples are held back, the rest are locked, and both remedies are spelled out), and when the parameter set is reassigned. The check mirrors the WF2 gate exactly and tests for the per-path assembly FASTA, not merely the directory, so an empty publish directory does not silence it.
-
ANNOTATEadditionally logs a warning naming the parameter-set directories that do exist for the sample. The unit is still emitted either way, soannotate()fails as loudly as it always has. - Coverage-details reads and writes are checked before anything is written, so a missing output can no longer leave a half-written Path 0 behind. The check reports but never creates: a directory holding only the Path 0 files would look complete while the raw path assemblies stayed orphaned.
Scaffold-join editor: live verification views
- The mapping plot and base-pair zoom now read a live layout that overlays your current reverse-complement and include choices, so manual edits are reflected immediately without re-running the reference mapping.
- Exclusion reasons are surfaced (“low reference coverage”, “unmapped”, “subsumed by scaffold N”) in the editor, the mapping plot, and the join note, so it is clear why a scaffold was left out of Path 0.
- Sparse placements are hatched in the mapping plot. A bar spans the union extent of a scaffold’s alignment blocks, so a sparse placement was previously drawn solid over reference it does not actually cover, which is what made the base-pair zoom look like it disagreed with the overview.
- Scaffolds that are included but have no reference placement are now called out (“appended with N gap”) instead of being absent from the plot entirely, and empty zoom rows say why they are empty rather than reading as missing data.
- Switching the reference recomputes the layout and snaps back to the last good accession if the recompute fails, so the dropdown can never disagree with the layout the build step actually uses.
Bug Fixes
Scaffold placement and joining
- Origin-wrap and repeat blocks no longer balloon a scaffold’s placement. A scaffold’s alignment blocks are reduced to a single colinear chain before the reference extent is taken, so a block on the far side of the origin can no longer stretch the extent across the whole reference and manufacture a genome-scale negative gap at the next junction. Query coverage is still scored over all blocks, so a genuinely rearranged scaffold is not dropped.
- The sparseness test is now relative to the sample’s own scaffolds rather than an absolute match-density floor. Match density falls with reference divergence, so the old fixed threshold was cleared by everything against a conspecific reference and by nothing against an ~83%-identity one, switching the guard off exactly where fragmented assemblies need it most.
- Contained scaffolds are excluded from Path 0 instead of forcing a large negative gap that trimmed real bases out of the container. Guarded so a scaffold still carrying substantial unaligned sequence is never discarded, and a scaffold that is itself excluded cannot be cited as another’s container.
- Junction overlaps must now be genuine. A confirmed overlap has to reach the 3’ terminus of the preceding scaffold, have ungapped and near-identical terminal columns, and not be low-complexity. On real data a dragged alignment scored 5/10 at the terminus with 42 indel bases where a true junction scored 100%, so short AT-rich matches were previously confirming junctions that were not there and trimming real bases.
- Overlap consensus no longer manufactures ambiguity codes. The coverage-majority consensus pairs the two scaffolds by index, so it now runs only when the overlap is base-alignable (no indels, and the aligned length matches the trim taken). Otherwise the preceding scaffold’s bases are kept and the junction note says so, instead of quoting an identity that does not describe what was written.
- A scaffold fully consumed by overlap trimming is dropped rather than appended as an empty piece, which previously desynchronized the source-position map. The following junction is re-measured against the scaffold actually present.
- Origin rotation only happens when a block actually reaches reference position 0. Extrapolating to the origin from a distant block is wrong across N gaps and non-colinear scaffolds, where the colinear offset is not constant.
- An unticked Circular box no longer silently emits the origin region twice. Redundant-end detection always runs; when trimming is not authorized, the join note warns that the duplication is present.
- Coverage tracks stay in register. Per-position strings now preserve their position count (empty cells become NA, outlier-mask prefixes are stripped) and are padded or truncated to the sequence length. Numeric mapping columns are also coerced back after SQLite returns them as text, which it does whenever unmapped scaffolds store empty strings.
Base-pair zoom rendering blank
- The zoom’s scaffold sub-region is estimated from a single anchor block, so its error grows with distance from that anchor and with every indel in between; scaffolds that showed a bar in the overview could render blank. The estimate now widens in proportion to the drift, candidate alignments are scored against the reference window and rejected below an identity floor, and a whole-scaffold realignment is tried when the estimate covers less than half the window. A drifted estimate now yields an honest blank instead of confidently wrong bases.
BLAST reference synteny orientation
- The whole-genome aligner aligns on whichever strand scores higher, so a sample stored on the opposite strand from its reference came back reverse-complemented, putting the synteny view in a different frame from the coverage map and the sequence editor: the same sample, with gene order and orientation mirrored between two plots sitting side by side. Alignments are now normalized on load so the sample is always drawn in its stored orientation and the reference carries the flip, labelled “shown reverse-complemented”. Independent of the
ref_based_rccuration option, which already flips the assembly before alignment. - Origin-wrapping features keep their gene label on both arcs. Labelling only the longer arc left an unidentified arrow at the opposite edge of the linearized layout.
Path 0 attribution in the join editor
- The joined assembly now inherits its BLAST hit from the accession the layout was actually built from, not the raw dropdown value, so a reference whose recompute failed can no longer mislabel Path 0.
- Manual layouts carry their reference coordinates and recompute junction gaps rather than blanking them. An all-empty gap vector switched off the overlap probe at every junction, turning each one into a blind 100-N spacer with the shared bases duplicated, including junctions the user never touched.
- Per-sample join state is cleared when the window opens, so a stale accession or orientation from a previously viewed sample cannot be stamped onto another sample’s Path 0.
Join-group ids in the annotation editor
- The next join-group id was derived from an unanchored
group=search over the notes field, and applied a non-vectorized operator to a whole column. A free-text note mentioninggroup=anywhere could steal or inflate the id, and a notes column holding only NULLs raised an error instead of returning the first id. The id is now derived from the anchoredJOIN:marker, matching the readers used by export and the un-join action.
Cluster configuration
-
memoryin.configis a plain number of gigabytes, but a bare number is interpreted as bytes by Nextflow.scaffold_join,coverage, andcoverage_userAsmbnow convert it explicitly and scale the request with the retry attempt, so a scheduler memory kill self-heals on retry instead of failing identically. -
scaffold_join.clusterOptionsaccepts a closure, letting a site configuration grow its own reservation per attempt (schedulers such as SGE take memory fromclusterOptionsrather than thememorydirective). Plain strings continue to work unchanged. - Default
scaffold_joinmemory raised from 4 GB to 8 GB, and the bundled NMNH Hydra configuration from 16 GB to 32 GB with per-attempt scaling.
Note To update older MitoPilot projects, please run MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database (including the new assembly_backup table) and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.5.0…1.5.1
MitoPilot 1.5.0
Released 2026-07-16. Container: macguigand/mitopilot:1.5.0
New Features
Annotate multiple paths/scaffolds per sample
-
A single sample can now carry more than one assembly into annotation. The annotation unit is promoted from
(ID)to(ID, path, scaffold): a sample may have several paths (alternative graph resolutions) and/or several scaffolds (fragments, separate molecules, or a multipartite mitogenome), and each unit is annotated and validated independently. -
Annotate table shows one row per unit. New Path and Scaffold columns auto-hide when every unit is
(1, 1), so single-assembly projects look unchanged. All row actions and the per-unit editor are keyed on the full(ID, path, scaffold)unit. -
Resolving competing paths: either ignore the extra paths, or build a consensus Path 0 (
(ID, 0, 0)) that merges them. Fragmented scaffolds: join them into Path 0, or keep genuinely separate molecules apart. - WF2 now runs per unit.
userAsmbprojects stay single-sequence and validate all contigs of a path together. - Per-unit export:
{seqid}is enforced for multi-unit FASTA headers so deflines match the.tbl; multi-path samples are blocked from export (competing resolutions of one genome would submit duplicate records). - New documentation articles: Multiple Paths and Scaffolds (how to resolve, join, and export units) and Troubleshooting (error messages moved out of the FAQ).
Bug Fixes
-
Fresh-project seeding: WF1 seeded per-unit
annotaterows from afromQueryon the just-writtenassembliestable, butfromQuerysnapshots the DB at session start, so on a fresh project every unit but(1, 1)was silently dropped by WF2’s inner join. Now seeded from the in-run channel. -
Annotation persistence:
persist_annotations()re-inserted keyed onIDalone, so a save on a multi-unit sample deleted the unit’s annotations and never restored them. Now keyed on the full primary key. - Migration fan-out: migrated multi-scaffold projects only received one unit; now every non-ignored scaffold is seeded.
-
userAsmb multi-contig: ANNOTATE / CURATE / ORF dropped all contigs but the first; now routed per the
params.userAsmbcontract. - Export robustness: export errors now show an alert instead of crashing the session.
-
Curation remote hits: split into a task-private DB searched alongside the read-only base (all nine
get_top_hitssites), so the base database is no longer mutated per task. -
Synteny on consensus:
compute_blast_ref_alignmentusedbaseOnly=TRUE, which fails on theNgap-spacers in Path 0 assemblies; nowbaseOnly=FALSE.
Warning 1.5.0 is a major database rework, not a routine update. MitoPilot::backwards_compatibility() migrates existing projects in place and irreversibly: it re-keys the annotate table to (ID, path, scaffold), rebuilds blast_ref_alignment (dropping legacy per-path alignment rows, which are recomputed on the next WF2 run), drops samples.export_group, and adds export and blast_ref_override tables. A migrated .sqlite cannot be reopened by an older version of MitoPilot (downgrade is not supported). The migration backs up your database to .old_sqlite_dbs/ first, and the app now refuses to open an un-migrated project with an actionable message instead of a raw error. Back up your projects before upgrading.
Note To update older MitoPilot projects, please run MitoPilot::backwards_compatibility(). This will migrate the SQL database to the new multi-unit schema and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.4.12…1.5.0
MitoPilot 1.4.12
Released 2026-07-14. Container: macguigand/mitopilot:1.4.12
New Features
Run the user-assembly pipeline without raw reads
-
new_project_userAsmb()gains ano_raw_datamode so user-supplied assemblies can be annotated with no sequencing reads at all. Read mapping and coverage calculation are skipped, andRAW_DIR="NA"is pinned in the project.config. -
coverage()gains a no-reads branch that synthesizes a schema-identicalcoverageStats.csvstraight from the assembly (GC computed from the sequence; depth / error left empty), so all downstream WF2 machinery runs unchanged. WF1 branches onparams.noRawData(derived fromrawDir == 'NA') to skipPREPROCESSvia a newcoverage_userAsmb_noReadsprocess / workflow, and the assemblies / assemble DB writes are factored into a shared writer. - In this mode, annotate coverage trimming is disabled (
coverage_trim = 0) and theR1/R2mapping columns are optional (carried asNA). - The Assemble table hides the read-derived columns (Preprocess Opts., Reads, Read Length) when a project is opened in
no_raw_datamode, since they carry no data without raw reads.
Bug Fixes
scaffold_join workflow stall
-
scaffold_joinnow retries a failed cluster submission before ignoring it. An ignored SGE / qsub submission failure left the mandatorymappingsoutput channel unclosed, hanging all downstream operators and stalling the head process after every task had finished; retrying first prevents transient submission rejections from triggering the stall.
blast_genbank remote NCBI server errors
-
blastn -remotecan print a server-side error (e.g. an NCBI queue database failure) to stderr while still exiting0with empty output, which was misclassified as a genuine no-hit. The step now captures stderr and exits1to trigger a retry when the output is empty but stderr shows an error signature.
userAsmb samples table R1/R2
- The
no_raw_dataR1/R2 backfill ran after the samples table was built, so samples lackedR1/R2and the app’sfetch_export_data()crashed on open. The backfill now runs before the samples / preprocess tables are created, so both carry the columns asNA, matching the read-based schema.
Cluster configuration
- Added a
himemflag toscaffold_joinin the bundled NMNH Hydra config, whose 16 GB/CPU request exceeds the 8 GB standard-queue threshold.
Note To update older MitoPilot projects, please run MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.4.11…1.4.12
MitoPilot 1.4.11
Released 2026-07-08. Container: macguigand/mitopilot:1.4.11
New Features
Scyphozoa curation ruleset
- New
scyphozoa_mitoruleset for true jellyfish, drafted from a survey of 39 complete mitogenomes: translation table 4, the 13 standard PCGs,rrnL/rrnS, onlytrnM+trnW, and optionaldpo/orf314terminal ORFs. Registered in the ruleset map and the curation ruleset browser.
orf314 curation reference & dpo consolidation
- New
orf314protein BLAST reference database built from cnidarian (Medusozoa) GenBank mitogenomes (RefSeq not required) and added to the bundledMetazoa_RefSeq235curation database, with provenance recorded in a tarballMANIFEST.txt. -
dpo/polB/dnaBare treated as a single gene (the medusozoan terminal DNA-polymerase-B ORF; the “replication helicase” label is a misannotation):polBanddnaBare normalized todpoacross annotation, curation, and the reference-DB build, and their reference sequences are merged intodpo.
Reference-based reverse-complement (curation)
- New optional curation step that reverse-complements a contig to match the orientation of its top BLAST reference, aligning against the top hit with an ambiguity-aware substitution matrix and propagating the flip to the sequence, annotations, and coverage. Intended for taxa the rRNA / start-gene heuristics cannot orient (e.g. jellyfish with rRNAs on opposite strands). Off by default; toggled in the curation options.
MITOS2 rRNA / PCG rescue
- New annotation option (on by default) that runs MITOS2 a second pass with tRNA prediction disabled and merges in any rRNAs / PCGs it uniquely recovers. MITOS2 discards rRNAs whose locus overlaps a predicted tRNA (e.g. a scyphozoan
rrnSwedged againstnad5); the tRNA-free pass recovers them (tRNAs still come from the full pass and tRNAscan-SE). The merge is additive, and a checkbox disables it to save runtime.
Export tracking in the Annotate & Export tabs
- Samples now carry a persistent
export_time_stamp, so you can see at a glance which samples have already been exported. The Annotate and Export tables show an Exported date column alongside the sample’s Export Group, and the Export table auto-refreshes when an export finishes so the timestamp populates immediately. - Both tabs gain an Exported (yes / no) filter; on the Export tab, filtered-out rows are pruned from the selection so bulk export only touches visible samples.
Table filtering & readability
- New “Updated between” date-range filter on the Annotate and Assemble tabs, to narrow the table to samples touched in a given window.
- 5’/3’ partial badges now show in the annotation-details feature table without entering alignment-edit mode, and refresh live when partiality is toggled with the edit tools.
- The Export table was cleaned up: raw internal columns are hidden and every table header is normalized to readable Title Case (e.g. Genetic Code, BLAST Hit, Export Group, # PCGs / # tRNAs / # rRNAs).
Bug Fixes
BLAST reference synteny orientation
- Reference genomes are now rotated to the start gene only when they are truly circular. Topology is read from the reference record (
Is_circular) and stored per reference, so linear references (e.g. jellyfish mitogenomes) keep their native coordinates in the whole-genome synteny alignment instead of being spuriously rotated.
Genetic code
- Opening a project whose
samples.genetic_codeis empty or malformed no longer crashes the app; the value is coerced to a single valid translation-table id (falling back to2).
add_samples
- Newly added samples now inherit
blast_optsand the annotate status flags (reviewed/problematic/partial/ID_verified) likeinit_db, so opening the BLAST or annotation options windows for them no longer errors.
backwards_compatibility
- Migrations add the new
blast_ref_sequences.topology,annotate_opts.ref_based_rc/rescue_no_trna, andsamples.export_time_stampcolumns (and their entries in the “nothing to update” guard), so existing projects self-migrate on open.
Note To update older MitoPilot projects, please run MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.4.10…1.4.11
MitoPilot 1.4.10
Released 2026-07-06. Container: macguigand/mitopilot:1.4.10
New Features
Gene merging & spliced-gene editing
- Reworked gene merging with distinct span vs joined-feature modes, and join-aware multi-segment editing in the annotate-details window.
- Refined the spliced-gene editor: alignment view, junction handling, overlap and nucleotide controls, and a nucleotide junction viewer available for all PCGs.
Multi-candidate BLAST references
- New schema and workflow for multiple candidate reference genomes per sample: the top-N BLAST candidate hits from GenBank are retained, each candidate reference (plus lineage) is fetched, and all are whole-genome-aligned to the sample.
- Candidates are kept separate per scaffold/path (never merged across divergent scaffolds), stored in accession-keyed reference tables, with per-sample streaming ref-fetch via a batched fetcher.
- New “All BLAST Hits” window shows one ranked candidate list per path/scaffold, and all candidate references are injected into the curation BLAST database to improve auto-curation.
-
max_target_seqsis now an editableblast_optsvalue in the database.
Reference genome picker & “Set as reference genome”
- New synteny reference picker in the annotate-details window (view-only), plus an explicit “Set as reference genome” button that overwrites
assemble.blast_accession(and metadata) from the chosen candidate.
Per-ruleset genetic code
- Genetic code now auto-selects per sample from its curation ruleset (
curate_opts.target) instead of one project-wide value, so samples on different rulesets can carry different codes. - Optional per-ruleset override in the curate-options window (“Auto (from ruleset)” or an explicit NCBI translation table); the resolved code flows into the annotate / curate / ORF steps and the annotation-details editor.
- The project-level
genetic_codewas removed from.config
Bug Fixes
Nextflow progress panel
- The live progress board is now reconstructed frame-by-frame: Nextflow reprints the whole board on each redraw and truncates process names unpredictably when task tags are long, which previously piled up stale/garbled rows (and an empty key could clobber a real process). The panel now renders exactly Nextflow’s latest board.
Curation & assembly options UI
- Ruleset “Target” dropdown is ordered alphabetically by its displayed label.
-
Free-typing is disabled on fixed-vocabulary pickers (
target,assembler,start_gene) so invalid values cannot be entered or dispatched; a typedtargetpreviously crashed viaparams_<typed>. - Fixed a synteny-section crash (NULL passed to
%|NA|%) that left the BLAST Reference Synteny panel blank, and kept the assembler tool help lines in sync with the assembler selection.
backwards_compatibility
- New signature
backwards_compatibility(path, executor = NULL, update_config = TRUE); the.configis regenerated wholesale from the executor template (porting project values and backing up the old config) instead of being patched line by line. -
genetic_codeis stored as INTEGER (with a legacy TEXT rebuild) soassemble.nf’sintValue()works; migrations add the new per-scaffold candidate,blast_accession_auto, andcurate_opts.genetic_codecolumns, guarding the scaffold-candidate seed so migrating an old project without anassembliestable no longer crashes. - The
curate_opts.genetic_codeoverride is seeded from the project’s current code, so migrated projects behave identically (no re-translation on re-run).
Note To update older MitoPilot projects, please run MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.4.9…1.4.10
MitoPilot 1.4.9
Released 2026-06-29. Container: macguigand/mitopilot:1.4.9
New Features
MitoFinder annotation
- New optional MitoFinder annotation tool in WF2, alongside MITOS2, with a new
annotate_mitofinder.Rand supporting Nextflow modules. -
MITOS2 and tRNAscan-SE are now optional (both on by default). The MITOS2 checkbox label describes the
--bestflag. - MitoFinder gene naming normalized: the GFF gene comes from the reference qualifier, with descriptors carried in
Name. - Duplicate gene calls sharing the same start are collapsed, and origin-spanning intervals are handled in the overlap helpers.
- Non-standard MitoFinder genes are kept as non-standard PCGs (sanitized fallback name) rather than dropped, inherit the default PCG ruleset via
augment_rules_for_unknown_genes, are renameable like ORFs in the window, and BLAST against the combined all-gene DB with gene-labeled hits and a non-standard badge.
rRNA curation editor
- New rRNA editor in the annotate-details window, reusing the edit/save framework: a nucleotide-boundary editor with 5’/3’ nudge buttons (no codon search). Editing auto-flags the rRNA as partial, partial flag is toggleable per end.
- Nucleotide alignment view for the focal rRNA. Alignment against new rRNA database (only available in the Metazoan RefSeq 235 curation database) plus the rRNAs from the best remote BLAST GenBank hit.
- rRNA features in the
.tbl(group and per-gene) carry the 5’/3’ partial markers set in the editor
General RefSeq curation databases
- New general RefSeq curation-DB builder (
data-raw/build_curation_db.R) covering PCGs and rRNAs, with non-standard mito gene capture and robust ORIGIN parsing. - New
Metazoa_RefSeq235curation DB offered in the UI (shipped underref_dbs/Mitos2/), with rRNA availability noted. - Combined ORF BLAST now works with gene-less curation DBs; the curation-DB header format matches the distributed databases.
Work Dirs browser
- New Work Dirs button in the top control bar opens a popup listing every Nextflow task work directory for a chosen sample, so you can jump straight to a step’s scratch dir to troubleshoot a failed process or inspect intermediate files.
- Popup has a searchable sample picker and a table of work dirs: Process | Status | Param set | Modified | Work directory | Copy / Open.
- Source is
.logs/nextflow.log*, parsed for completed-task records (success and failure), so failed processes (never published to the output tree) are captured with zero pipeline changes on existing projects. - Status icons come from the task exit code: green check (success) / red triangle (failed), so a failed attempt and its successful retry both show, distinctly.
- Rerun handling: dedup by path, filter to dirs still on disk, add a Modified timestamp, sort newest-first.
- Pre-selects the sample currently selected in the active table. Environment-aware Open: local OS file browser, RStudio Server Files pane, headless warning + path to copy, missing-dir warning.
Sample table quality-of-life
- The Assemble, Annotate, and Export sample tables now auto-fit the window height and can be manually resized via a drag handle, replacing the fixed
height = 500. On window resize the dragged height is cleared so the table re-fits the new window size. - Added a live “N selected” counter beneath each sample table.
- Added an “All” option to the page-size dropdowns, re-applied via a MutationObserver after reactable re-renders.
- Add a Clear Group button to unassign export groups.
Annotate details navigation
- Mousewheel now scrolls the coverage map, BLAST synteny plot, and MSA alignment horizontally; page scroll is suppressed while hovering these views.
- Sticky gene-name labels overlaid on the coverage map, synteny overview, and zoomed synteny plot: each visible annotation keeps its name pinned to the edge of the view while any part of its block is on screen, then hands off to the next gene as blocks scroll past.
- Labels include a directional arrow drawn as a CSS border-triangle, with strand-aware layout (
+strand: name then right arrow, pinned left;-strand: left arrow then name, pinned right). The old in-plot gggenes labels were removed.
RStudio Server file-open notification
-
open_path()now shows a brief notification on RStudio Server explaining that the folder opened in the Files pane (bottom-right), since that is not obvious. - The three “output folder” buttons (assemble, annotate, userAsmb assemble) route through
open_path(), sharing this behavior plus headless / missing-dir handling, replacing duplicated server-vs-local blocks.
Bug Fixes
rRNA export gene names
- At request of NCBI GenBank curation team, rRNA gene names are now written as
rrn12(small subunit / s-rRNA / 12S) andrrn16(large subunit / l-rRNA / 16S) across all export artifacts: main.tblgene qualifier, GFFName=, and per-gene exports (file/directory names, per-gene.tblgene qualifier, FASTA headers). - Export-only transformation: internal storage, annotation, curation, and display are unchanged, product fields (
12S/16S ribosomal RNA) are unchanged, and re-import stays safe becausenormalize_rrna()already mapsrrn12/rrn16back torrnS/rrnL.
User-assembly WF2 crashes from coverage NA/format
-
validate:na.rmplus a zero-row guard on the coverage/error heuristics; strip the outlier#prefix and coerceMeanDepth/ErrorRateto numeric. -
coverage_trim: skip the trim when no position clears the depth threshold (avoidsInfindices). -
coverage_userAsmb_workflow: drop a stray.take(2)that truncated the per-position depth/gc/error series.
BLAST reference fetching
- Deduplicate BLAST reference fetches across samples by accession, with clearer failure flagging when a fetch fails.
-
NCBI taxonomy 200-with-error-body retry: EFetch can return HTTP 200 with an error payload inside
<TaxaSet>when its backend times out, which previously wroteorganism/lineageas null and exited successfully. The taxonomy body is now validated for<ScientificName>; if absent, the taskstop()s so the existing Nextflow retry re-runs it. The expensive genome FASTA download happens after the taxonomy step, so it is not re-downloaded by these retries.
User-assembly table UI
- Filter parity: the userAsmb assemble table gained the Lock / State / Show-columns filters present in normal assemble.
- Removed reactable
columnGroupsfrom the userAsmb table, which broke horizontal scrolling when combined with sticky columns. - Scoped
col_cssdisplay:nonerules to each table’s own DOM id, fixing a cross-table filter leak where a filter on one table hid matching rows/columns in the others. - Shift-click range selection no longer picks up CSS-hidden rows: a read-time mask plus an observer prune hidden rows from reactable’s selection.
Other fixes
- Run the PCG outlier review before writing export files, not after.
-
isolate()the reactive read in the deferred job-submit callback. - Drop spurious NA warnings from
warnings_details. - Harden the work-dir browser for cluster executors.
- Show a “hold tight” message while submitting a cluster job.
Note To update older MitoPilot projects, please run MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.4.8…1.4.9
MitoPilot 1.4.8
Released 2026-06-23. Container: macguigand/mitopilot:1.4.8
New Features
Partial / incomplete mitogenome support for GenBank submission
- New per-sample Partial review flag to mark incomplete mitogenomes. Export titles switch from “complete genome” to “partial genome” via a new
{completeness}template field. - Completeness now auto-derives from topology: circular assemblies default to “complete”, linear to “partial”. New project-level
linear_completesetting (in the curation-options window) forces linear assemblies to “complete” for taxa with genuinely linear mitogenomes. A per-sample partial flag always overrides. - Marking a circular assembly as partial warns and steers users toward the Linearize button (override still allowed).
- Export window warns when an export group mixes complete + partial mitogenomes (not allowed in one GenBank submission), offering to split into
<name>-complete/<name>-partial.
Manual partial CDS start/stop controls
- New per-gene
partial_start/partial_stopflags with controls to mark CDS ends as partial (exported as NCBI</>markers, applied strand-independently). - Poly-A stop trim: force trim a complete stop codon to “T” or “TA”
- Start/stop codons not in the gene-specific allowed list are highlighted on the 5’/3’ partial buttons and flagged, matching export handling.
CSV export
- New Export Selected/All to CSV buttons on the Export tab (matching Assemble/Annotate tabs).
- Every
export_files()run auto-writes a per-sample summary CSV (<group>_sample_info.csv, orsample_info_<date>.csvfor direct ID calls; gated by newsummary_csvarg, default on). Now includes assembly length.
Hydra HPC support
- New
hydra_setup()replaces the manual path modification required for Hydra R Studio server
Bug Fixes
WF2 atomic curate + validate writer
- Replaced four separate WF2 database writes with a single driver-side JDBC transaction (
write_curated_result) that commits the curated sequence, annotation coordinates, and partial flags together, rolling back on any error. Prevents assembly and annotation coordinates ending up in different rotation frames (misaligned viewer, wrong exports). CURATE/VALIDATE now emit files only, gated on the writer’s commit. - The writer runs as a native Nextflow
execprocess pinned to thelocalexecutor (it runs in the driver JVM, so it is never dispatched to an HPC scheduler like SGE/SLURM), keeping all DB writes single-writer and NFS-safe. - The SQLite JDBC driver is now loaded from the
nf-sqldbplugin classloader (the plugin the pipeline already uses forfromQuery/sqlInsert), instead of a vendoredsqlite-jdbcjar shipped with the package. This removes the fragilelib/jar (whichR CMD buildcould silently strip), decouples the driver from the R package layout for headless cluster runs, and keepswrite_curated_resulton the same driver version as the rest of the pipeline.
Per-scaffold BLAST lineage
- Multi-scaffold samples whose scaffolds hit different taxa no longer all inherit the sample top-hit lineage. Lineage is now keyed on the full
(id, path, scaffold, accession).
GUI lifecycle
- App now stops cleanly when the last browser session closes (unblocking the R console) but survives a page refresh via a grace-period idle check.
Annotate edit gating
- Close / Lock&Close detect unsaved partial 5’/3’ and poly-A stop edits (previously only checked translation).
- Partial toggle stores explicit
'no'(not NA) when turned off and renders it in the table; “complete” badge shown as neutral. - Auto-generated
EDITED:notes (e.g. from manual linearization) are stripped on WF2 regeneration; user-typed notes preserved.
Note To update older MitoPilot projects, please run MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.4.7..1.4.8
MitoPilot 1.4.7
Released 2026-06-16. Container: macguigand/mitopilot:1.4.7
Run MitoPilot headless on an HPC cluster
This release lets you run the MitoPilot app headless on a high-performance computing (HPC) cluster, without RStudio Server, an X11 display, or a web browser on the cluster itself.
“Headless” means the app runs as a plain web server on a cluster node, with no graphical desktop attached. The MitoPilot app is just a Shiny web server sitting on top of your project’s SQLite database and Nextflow, so it does not need a screen of its own. You start the server on the cluster, open an SSH tunnel from your local computer, and use the full assemble / annotate / curate interface in your local browser at http://localhost:<port>. The computation still happens on the cluster; only the interface is forwarded to you.
See the documentation for the complete walkthrough: Running MitoPilot headless over an SSH tunnel.
New features
-
Headless / SSH-tunnel launch.
MitoPilot()now acceptshost,port, andlaunch.browserso you can bind the app to a fixed host and port and tell it not to open a local browser (launch.browser = FALSE). On startup the server prints the exactssh -N -L <port>:NODE:<port> <user>@<cluster>tunnel command using the live node hostname. -
In-app cluster submission script. When you start a workflow over a tunnel, MitoPilot does not run Nextflow on the app’s node. Instead it shows a ready-to-edit cluster submission script, pre-filled with the correct scheduler directives (
#SBATCH,#$,#PBS, or#BSUB) for your project’s executor. Use “Submit to Cluster” to submit it directly (sbatch/qsub/bsub), or “Save Script Only” to write the script and submit it yourself from a normal cluster shell. -
Persisted resource edits. Edits to the submission script’s resource block are remembered per project (saved to
.mitopilot_submit.template) and pre-filled on the next run. Toggling the “Resume previous run?” checkbox adds or removes-resumewithout disturbing your edits. - Hydra submission format. On the NMNH Hydra cluster the submission script is generated in Hydra’s expected format automatically.
Hydra setup helper function
-
hydra_setup()helper for NMNH Hydra. RStudio Server sessions on Hydra start with a strippedPATHthat omits the Univa Grid Engine binaries, so Nextflow cannot findqsuband job submission silently fails. CallMitoPilot::hydra_setup()once per session, before launching the app, to prepend the UGE, Java, and~/bindirectories toPATH. Has no effect (and warns) when not running on Hydra.
Documentation
- Expanded the HPC vignette with a full headless / SSH-tunnel section, an RStudio Server alternative, and an R-session-before-config setup order.
Note To update older MitoPilot projects, please run MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.4.6…1.4.7
MitoPilot 1.4.6
Released 2026-06-12. Container: macguigand/mitopilot:1.4.6
New Features
19 new invertebrate clade rulesets
Curation and validation support extended to 19 additional metazoan lineages.
New clades: Ascidiacea, Bivalvia, Bryozoa, Crinoidea, Demospongiae, Echinoidea, Gastropoda, Holothuroidea, Homoscleromorpha, Hydrozoa, Malacostraca, Nemertea, Ophiuroidea, Platyhelminthes, Polychaeta, Pycnogonida, Sipuncula, Thaliacea, Thecostraca.
-
curate_*/validate_*bodies refactored into sharedcurate_mito_core()/validate_mito_core(); each clade is a thin wrapper - Curate/annotate target dropdown now shows
Scientific name (Common name)labels - Curation ruleset browser updated with all 19 new clades
Build assembly reference databases in R with custom_assembly_db()
New function builds GetOrganelle (seed + label) and/or MitoFinder reference databases for any valid clade name in the NCBI taxonomy, with no external tools required.
- Validates clade against NCBI Taxonomy; single GenBank download via NCBI E-utilities (httr2)
- CDS extracted locally from feature locations; length-based handling of unannotated sequences for seed DB
- MitoFinder DB restricted to complete mitochondrial genomes
- Dated output directory with README/manifest recording GenBank access; overwrite guard
- Documented in README and new
custom_dbsvignette
Multi-path assembly review and consensus builder
New interactive workflow in the assembly coverage-details window for resolving multi-path assemblies.
- Path scoring: each assembly path scored on topology, length, coverage, and BLAST identity; paths ranked with a summary table
- Conflict-block navigation: guided step-through of alignment columns where paths disagree
- Consensus builder: position-by-position review panel shows base-pair level conflicts, allows user to decide how to resolve each conflict (mask with N, ambiguity code, majority rules consensus, or choose one path)
- Finalize Consensus: writes a resolved sequence + coverage CSV and records edit positions (JSON) and a human-readable summary in assemble notes
Optional ORF-finder annotation step
New optional workflow step after curation/validation finds open reading frames (ORFs) in unannotated regions.
- New
orf_optsparameter set (window and DB table) with configurable CPUs, memory, min ORF length, max overlap fraction, strand, and nested-ORF toggle -
orf_finder(): runs NCBI ORFfinder, filters to unannotated regions (configurable overlap fraction), deduplicates by longest-per-region, names surviving ORFsORF.1..N, and BLASTs each against the combined featureProt database with per-hit candidate gene labels - Annotate-details window updated: “Assign gene name” button, “Edit/Remove assignment” for assigned ORFs, “Auto-assign ORFs” bulk action (assigns ORFs with >= 60% similarity to a standard PCG)
-
# ORFscolumn added to Annotate and Export tables; blank (not 0) when ORF finding is disabled - ORFs exported as hypothetical-protein CDS in
.tbl/.gff; per-gene FASTA/tbl files skip ORFs - Docker image updated with NCBI ORFfinder binary and runtime dependencies
Alignment-based protein-coding gene outlier review on export
New per-gene review step detects annotation outliers before export.
- Flags PCGs with start/stop codon offsets beyond a configurable amino-acid threshold (default ±10 aa) or low sequence identity
- Gene-by-gene review window with inline MSA, per-sample edit links that jump directly to the annotate-details window (auto-selecting the flagged gene), and a “Mark gene resolved” control
- “Back to Review” button in the details window returns to Export and recomputes only the edited gene’s alignment (not all PCGs)
- Outlier flags + offsets included in the HTML alignment report
- Review is on by default; thresholds and toggle persisted across window opens
Save FASTA header templates for export
Saved FASTA header templates for mitogenome and gene sequences, persisted in a new export_opts table.
- Dropdown menu loads or saves a header pair
- Live validation: unbalanced braces, unknown
{column}references, and empty templates are caught and blocked from saving - Output path shown in a popup with a copy button after export completes
Bug Fixes
MITOS2 crash on ambiguous bases in CDS
Biostrings::translate() with default if.fuzzy.codon = "error" crashed WF2 when MITOS2 annotated a CDS containing IUPAC ambiguity codes (e.g. from low-coverage regions). Fixed by passing if.fuzzy.codon = "solve".
Circular wrap-around genes in annotation plots
Coverage map and BLAST-reference synteny plots now correctly render genes that cross the circular origin; such genes are split into two arcs via split_wrapped_genes() with the label placed on the longer arc.
Consensus assembly coverage format
The multi-path “Build resolved assembly” (Path 0) wrote a raw coverage CSV incompatible with annotate(), causing a crash when moving a consensus assembly to the Annotate step. Fixed by sharing the rolling-stats helpers between coverage() and persist_path0().
Alignment-edit save performance
Per-hit stat recomputation (similarity, pct identity, end gaps) was running ~400 individual pairwise alignments and reloading BLOSUM80 on each call. Replaced with one vectorized pwalign call for similarity/pctid and one DECIPHER alignment per target. Result identical; substantially faster.
Internal
- Default
max_blast_hitsreduced from 100 to 10 (speeds up in-app review and alignment-edit save; existing projects keep their stored value) -
blast_genbankworkflow switched fromnttocore_ntdatabase -
maxForksthrottle added toblast_ref_fetchNextflow process
Note To update older MitoPilot projects, please run MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.4.5…1.4.6
MitoPilot 1.4.5
Released 2026-06-08. Container: macguigand/mitopilot:1.4.5
New Features
Interactive curation ruleset browser
New ruleset_browser() function generates a self-contained interactive HTML visualization of MitoPilot’s taxon-specific curation rulesets.
- Left pane: collapsible taxonomy tree rooted at Metazoa, built from NCBI Taxonomy lineages. Supports scroll, expand/collapse, and live filter. NCBI lineages cached locally; works offline after first run.
- Right pane: per-clade genetic code, global thresholds, and collapsible PCG/rRNA/tRNA/ctrl tables showing effective per-gene rules with type defaults overlaid by per-gene overrides. Parameter tooltips throughout.
- Wired into the pkgdown docs as a new Curation Rulesets article embedding a committed HTML snapshot (no build-time NCBI dependency).
Sample status filters on Assemble and Annotate tables
Lock and State picker dropdowns added to the Assemble and Annotate sample tables.
- Filter by Lock (Unlocked/Locked) and by workflow State without reloading or re-sorting the table.
- Uses CSS-hide so sort order, search, column filters, current page, and row selection survive toggling.
Known tradeoff: hidden rows still count toward pagination, so a page may show fewer rows than its page size while filters are active.
Bug Fixes
Alignment view not refreshing on repeated codon edits
The annotate-details MSA stopped updating when consecutive edits produced the same codon string. reactiveValues uses identical() to deduplicate assignments, which cannot detect content changes inside XStringSet S4 external pointers, so the rebuilt alignment compared equal and msaR never re-rendered. Fix: bump a monotonic render_nonce on each edit so the alignment always invalidates.
Codon edit handlers consolidated
The eight duplicated *-simple-5/*-simple-10 handler sets are collapsed into one handler each, driven by the configurable step-size input. Manual edits now correctly honor gene-specific codon lists from the taxon-specific curation ruleset (fixed modifyList argument order so per-gene rules override type defaults).
Start/stop codon button order
The START -/+ buttons were swapped; corrected so order is intuitive (left=decrease, right=increase).
Note To update older MitoPilot projects, please run the R function MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.4.4…1.4.5
MitoPilot 1.4.4
Released 2026-05-29. Container: macguigand/mitopilot:1.4.4
Bug Fixes
Issue with low-confidence tRNA annotations
Low-confidence tRNA calls from tRNAscan-SE/ARWEN/ARAGORN with an unresolved NNN anticodon could overlap a valid MITOS2 tRNA, suppress it via the overlap filter, and then be removed by the final NNN filter, leaving the gene unannotated. NNN calls are now excluded from overlap suppression, so valid MITOS2 tRNAs are retained.
New Features
Option to retain low-confidence (NNN) tRNAs
A new “Retain low-confidence (NNN anticodon) tRNAs” toggle in the annotate-options modal (off by default) keeps NNN-anticodon tRNAs in the output when desired. When retained, each such tRNA is flagged during validation with a low-confidence tRNA (NNN anticodon) warning, surfaced in the Annotate table’s warnings column.
Available as the retain_low_conf_trna parameter of annotate() and plumbed through the Nextflow annotate workflow. Existing projects gain the new option automatically via a database migration with MitoPilot::backwards_compatibility() (default: off).
Performance
Faster, higher-fidelity Annotate details figures
- Coverage map is rendered with
ragg::agg_png, bypassing Cairo’s surface-size limit that previously truncated the right edge of large mitogenome plots. - Coverage, synteny, and alignment/codon views render substantially faster.
- Coverage and gene-track panels are aligned; synteny identity stripes added.
- The genetic-code lookup table is cached once per session instead of being recomputed on every codon edit.
Internal / Build
- Added
raggandcowplotto package dependencies. - The Docker image now installs
r-raggfrom conda-forge (with its font/graphics dependencies); rebuild the image to pick up the new dependency and the annotation fix.
Note To update older MitoPilot projects, please run the R function MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.4.3…1.4.4
MitoPilot 1.4.3
Released 2026-05-27. Container: macguigand/mitopilot:1.4.3
MitoPilot v1.4.3
New Features
Generic HPC executor support
MitoPilot now ships built-in Nextflow config templates for generic job schedulers: slurm, sge, pbs, and lsf. A new generate_config() helper saves a named cluster profile (queue, account, container engine, etc.) to the user config directory for reuse across projects:
## configure once
MitoPilot::generate_config(
name = "my_cluster",
scheduler = "slurm",
queue = "general",
account = "my_allocation",
container_engine = "apptainer"
)
## reuse for any project
MitoPilot::new_project(..., executor = "my_cluster")
## see all available configs
MitoPilot::list_configs()Custom Nextflow configs can still be passed directly via config = “path/to/.config”.
See the new Custom HPC vignette for details.
CSV export for Assemble and Annotate tables
“Export Selected to CSV” and “Export All to CSV” download buttons are now available at the bottom of the Assemble and Annotate modals. The selected-rows export is disabled when no rows are selected. Files download directly to the browser, including when running via RStudio Server on a remote cluster.
Bug Fixes
BLAST_REF_FETCH silent failures
fetch_blast_ref() was calling write_empty_ref() and returning exitcode 0 on empty or malformed NCBI GFF3 responses. Nextflow’s retry and failure-detection machinery therefore never fired, and affected samples were falsely advanced to assemble_switch = 2 (WF1 complete) with no reference data. All failure paths now call stop(), enabling proper retry behavior and correct terminal failure marking (poor_blast_ref = 'failed', assemble_switch = 3).
Missing blast_lineage on Nextflow -resume
On -resume, re-running ASSEMBLE wipes assemblies.blast_lineage via INSERT OR REPLACE. If the cached blast_ref_fetch lineage UPDATE fired before blast_genbank had re-written blast_accession, the accession-matched lineage UPDATE was a no-op, leaving blast_lineage blank in the app’s Assemble modal. Fixed by propagating blast_lineage from the assemble table via a correlated subquery whenever blast_genbank writes scaffold BLAST hits, covering both task-ordering scenarios.
ID Verified column filter not matching NULL rows
NULL ID_verified values were displayed as "no" by the badge renderer but stored as NULL in the data, so filtering the column for "no" missed most rows. Fixed by coercing NULL to "no" in fetch_annotate_data().
Note To update older MitoPilot projects, please run the R function MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.4.2…1.4.3
MitoPilot 1.4.2
Released 2026-05-26. Container: macguigand/mitopilot:1.4.2
New Features
### Optional NCBI API key - New ncbi_api_key argument on new_project() and new_project_userAsmb(), substituted into all config templates as params.ncbi_api_key. - blast_genbank and blast_ref_fetch export NCBI_API_KEY, raising the remote BLAST and eutils rate limits. The key is redacted from logs. An empty key keeps the existing anonymous behavior, so no migration is needed for existing projects.
Bug Fixes
WF1 state machine hardening
-
Terminal state no longer overwritten:
state=3fromASSEMBLEis now reserved for truly terminal outcomes (empty output, exceeds path/scaffold limits, all scaffolds below min length). Onlystate=4rows are emitted downstream, so BLAST/ref-fetch can no longer flip a dead sample back tostate=2or clobber its assembly warning. -
Race that stranded
no_blastsamples fixed:ASSEMBLEis now the sole writer forrun_blast=0samples, finalizingstate=2directly instead of racing withBLAST_GENBANK’s batched skip-write. -
COVERAGE now runs for
no_blastsamples, so WF2 ANNOTATE finds the expectedcoverageStats.csv. - BLAST/ref-fetch notes use tag-and-replace append semantics, so warnings accumulate cleanly across stages and
-resumeretries stay idempotent. All downstream UPDATEs are guarded withWHERE assemble_switch = 4. -
poor_blast_refnow distinguishes failure source: NULL = assembly,failed= BLAST/ref-fetch,good= success.
BLAST robustness
- Empty BLAST output (genuine no-hit or silent connection failure) now exits non-zero and retries up to 3 times with backoff; exhausted retries write
state=3with a note instead of silently completing. -
state=2is written only once the reference fetch also succeeds, matching the semantics that WF1 is complete only when both steps pass. - Added
maxForkstoblast_genbankto limit concurrent remote calls and reduce NCBI timeouts.
Other Changes
- Adjusted Hydra controller and SGE job memory requests.
Note To update older MitoPilot projects, please run the R function MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.4.1…1.4.2
MitoPilot 1.4.1
Released 2026-05-20. Container: macguigand/mitopilot:1.4.1
BLAST enhancements - Per-scaffold GenBank BLAST search and reference sequence fetching — each scaffold is evaluated independently rather than requiring a single-contig assembly - BLAST reference alignment status badges in the Assembly table - BLAST reference fetch timeouts are now surfaced as sample-level failures with a descriptive note rather than silently stalling
Assembly QC - Scaffolds below the min_assembly_length threshold are colored and flagged ignore = 1 - Multi-scaffold samples with exactly one scaffold above the min_assembly_length threshold are now promoted to Successful rather than Problematic state. A “disconnected contigs” note is still recorded.
Multi-scaffold support - Fragmented-assembly details modal is now enabled, allowing scaffold-level review - Scaffold ignore flags are now respected throughout the Annotate and Export modules - Export hardened against multi-scaffold edge cases - Assembly table auto-promotes to Successful when only one scaffold/path is active; auto-reverts to Problematic if multiple become active
UI improvements - Column-group picker in Assembly and Annotate tables - Compact status UI in the Annotate module - BLAST reference alignment status column and badges in Assembly table
In-app help documentation - Bundled --help text for getOrganelle, MitoFinder, MITOS2, BLASTN, tRNAscan-SE, ARAGORN, and ARWEN - “?” icons throughout the UI open tool documentation inline
Bug fixes - Fixed remote BLAST reference path resolution after per-accession subdirectory refactor - Fixed Nextflow channel deadlock in the ASSEMBLE workflow that caused COVERAGE, BLAST_GENBANK, and BLAST_REF_FETCH process nodes to remain active indefinitely after all tasks completed
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.4.0…1.4.1
MitoPilot 1.4.0
Released 2026-05-12. Container: macguigand/mitopilot:1.4.0
-
Remote GenBank BLAST tools: new BLAST_REF_FETCH / BLAST_REF_ALIGN workflows execute during the Assemble module. For each sample, fetch the top BLAST hit directly from GenBank and compute pairwise mitgenome alignment against your assembly. Remote BLAST results are shown in MitoPilot app (with hyperlinks to GenBank). Best remote BLAST hit is used during the automatic curation of gene annotations. Remote BLAST hit it appended to FASTA header during export as
[note=annotation compared to GenBank accession XXXXX]to facilitate review by GenBank staff. - Synteny/alignment visualization: interactive 4-track synteny/alignment plot (overview + zoomed bp-level view) comparing sample assembly to remote BLAST reference; features include click-to-zoom, zoom-to-gene, rolling windows of % sequence similarity, and bp-level alignment
- ARAGORN tRNA rescue: integrate ARAGORN as an optional tool for tRNA detection
-
Live per-sample assembly writes: Assemble table in app updates per-sample as each job completes rather than at the end of the Assemble module; user must still click the
refreshbutton -
max_paths / max_scaffolds thresholds: set in the
Assembly Optsto cap ambiguous outputs and reduce the number of coverage stat calculations; samples exceeding thresholds fail gracefully with diagnostic notes -
Mergebutton in Details section of Annotate page can now combine PCGs or rRNAs - Optimizations to improve execution on Smithsonian Hydra cluster and reduce number of Java OOM crashes
- UX improvements, including gene type and annotation tool column badge colors in annotation details table
Note To update older MitoPilot projects, please run the R function MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.3.10…1.4.0
MitoPilot 1.3.10
Released 2026-04-28. Container: macguigand/mitopilot:1.3.10
- added option to use ARWEN for tRNA prediction alongside tRNAScan and MITOS, may be helpful for samples missing tRNAs
- updated logic to better reconcile overlapping tRNA annotations between tRNAscan, MITOS, and ARWEN
- updated default options for tRNAscan to remove poor tRNA predictions
- added “Merge PCG” button to Details section of Annotate page, allows user to combine split annotations for the same gene
- added “Restore” button to Details section of Annotate page, can now easily restore annotations deleted by the user
Note To update older MitoPilot projects, please run the R function MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.3.9…1.3.10
MitoPilot 1.3.9
Released 2025-12-17. Container: macguigand/mitopilot:1.3.9
- added curation parameter rules for annelids
- bugfix for validation step
Note To update older MitoPilot projects, please run the R function MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.3.8…1.3.9
MitoPilot 1.3.8
Released 2025-12-15. Container: macguigand/mitopilot:1.3.8
- updated to MITOS v2.1.10 to fix issue with D-loop orientation (see https://gitlab.com/Bernt/MITOS/-/issues/58)
- updated Docker image R version to 4.5.2
- added curation parameter rules for ctenophores and birds
- minor app bugfixes
Note To update older MitoPilot projects, please run the R function MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.3.7…1.3.8
MitoPilot 1.3.7
Released 2025-12-03. Container: macguigand/mitopilot:1.3.7
- improved performance of start/stop codon editing buttons
- added new
tbl_to_gff3function, converts GenBank feature table (generated by MitoPilot) to GFF3 format - minor tweak to control region ID in GFF export
- bugfix for validating annotations with introns
Note To update older MitoPilot projects, please run the R function MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.3.6…1.3.7
MitoPilot 1.3.6
Released 2025-11-21. Container: macguigand/mitopilot:1.3.6
- new curation ruleset for hexacorals, allows introns in ND5 and CO1
- handle annotation and export of genes with introns
- updated the NOAA SEDNA cluster documentation Note To update older MitoPilot projects, please run the R function
MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project.configfile.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.3.5…1.3.6
MitoPilot 1.3.5
Released 2025-09-05. Container: macguigand/mitopilot:1.3.5
Changed Nextflow implementation to skip samples that fail during the pipeline, allowing good samples to continue running.
Note To update older MitoPilot projects, please run the R function MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.3.4…1.3.5
MitoPilot 1.3.4
Released 2025-08-20. Container: macguigand/mitopilot:1.3.4
- added curation ruleset for turtles
- clarified help documentation for
new_projectargumentmin_depthNote To update older MitoPilot projects, please run the R functionMitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project.configfile.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.3.3…1.3.4
MitoPilot 1.3.3
Released 2025-08-15. Container: macguigand/mitopilot:1.3.3
- New function custom_curation_db generate a custom curation database from user-supplied table of translated (amino acid) mitochondrial gene sequences
- Bugfix for switching between curate option sets in Shiny app
Note To update older MitoPilot projects, please run the R function MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.3.2…1.3.3
MitoPilot 1.3.2
Released 2025-08-08. Container: macguigand/mitopilot:1.3.2
- check for lowercase “circular” or “linear” values in Topology field when user supplies their own assemblies
- bugfix for “add_samples” function
Note To update older MitoPilot projects, please run the R function MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.3.1…1.3.2
MitoPilot 1.3.1
Released 2025-07-31. Container: macguigand/mitopilot:1.3.1
- added curation ruleset for lepidosaurs
- fixed bug in curation rulesets and parameters for octocorals and copepods
Note To update older MitoPilot projects, please run the R function MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.3.0…1.3.1
MitoPilot 1.3.0
Released 2025-07-22. Container: macguigand/mitopilot:1.3.0
- allow user to provide custom curation databases
- new metazoa RefSeq 231 database is included for curation (old metazoa database was RefSeq 89)
- NMNH users can submit MitoPilot Hydra jobs directly from the app
Note To update older MitoPilot projects, please run the R function MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.2.8…1.3.0
MitoPilot 1.2.8
Released 2025-07-15. Container: macguigand/mitopilot:1.2.8
- new curation ruleset for octocorals
- bug fixes for start/stop codon manual editing
- new buttons to manually shift start/stop codon positions in increments of 1, 5, or 10
- “DELETED” message sent to notes instead of warnings field when removing gene annotations
- require sample IDs to only contain alphanumeric characters, dashes, underscores, or colons
- print sample IDs that violate rules when initializing a project
- fixed bug in init_db_userAsmb
- “problematic” field defaults to “no” when initializing a project
Note To update older MitoPilot projects, please run the R function MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.2.7…1.2.8
MitoPilot 1.2.7
Released 2025-06-27. Container: macguigand/mitopilot:1.2.7
- adds preliminary curation ruleset for copepods
- fixes error in handling of tRNAs with undetermined anticodons
- fixes bug in curation script when correcting overextended negative strand gene start codon positions
- adds warnings filter to Annnotate GUI
-
warningsfield in the annotate table now reports the total number of warnings rather than the number of genes with warnings -
extrafield in annotate table now lists duplicated genes by name rather than a count of total duplicated genes
Important The extra field in the annotation table will not update unless you rerun the Annotate module.
Note To update older MitoPilot projects, please run the R function MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the Docker/Singularity container version in your project .config file.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.2.6…1.2.7
MitoPilot 1.2.6
Released 2025-06-20. Container: macguigand/mitopilot:1.2.6
- Fixed a start/stop codon bug when MITOS2 annotation wraps around a circular assembly
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.2.5…1.2.6
Note To update older MitoPilot projects, please run the R function MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database and attempt to update the container version in your project .config file.
MitoPilot 1.2.5
Released 2025-06-17. Container: macguigand/mitopilot:1.2.5
- fixed bug with Nextflow progress output ANSI encoding in the Shiny app
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.2.4…1.2.5
Note To update older MitoPilot projects for this release, please run the R function MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database. You should also make sure your project’s .config file lists the matching container (container = 'macguigand/mitopilot:1.2.5').
MitoPilot 1.2.4
Released 2025-06-03. Container: macguigand/mitopilot:1.2.4
- reject stop codon auto-curation if it introduces an internal stop codon
- fixed bugs with Annotate details stop codon manual editing buttons
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.2.3…1.2.4
Note To update older MitoPilot projects for this release, please run the R function MitoPilot::backwards_compatibility(). This will add any missing fields to the SQL database. You should also make sure your project’s .config file lists the matching container (container = 'macguigand/mitopilot:1.2.4').
MitoPilot 1.2.3
Released 2025-05-21. Container: macguigand/mitopilot:1.2.3
Added alternate start codons for NAD1, NAD3, and NAD4L to curation parameters in params_starfish_mito.R based on RefSeq starfish mitogenome annotations.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.2.2…1.2.3
Note To use old projects with the latest MitoPilot release, please run the function MitoPilot::backwards_compatibility(). This will update the SQL database with any missing fields (columns).
MitoPilot 1.2.2
Released 2025-05-20. Container: macguigand/mitopilot:1.2.2
Changed coverage plotting in the Annotate details panel of the Shiny app.
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.2.1…1.2.2
Note To use old projects with the latest MitoPilot release, please run the function MitoPilot::backwards_compatibility(). This will update the SQL database with any missing fields (columns).
MitoPilot 1.2.1
Released 2025-05-08. Container: macguigand/mitopilot:1.2.1
Fixed the following R functions to work with user-assembly projects - update_sample_metadata() - update_sample_seqdata() - add_samples() - export_db_to_csv()
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.2.0…1.2.1
Note To use old projects with the latest MitoPilot release, please run the function MitoPilot::backwards_compatibility(). This will update the SQL database with any missing fields (columns).
MitoPilot 1.2.0
Released 2025-05-07. Container: macguigand/mitopilot:1.2.0
What’s Changed
- New R function
new_project_userAsmb()allows users to create a project with their own mitogenome assemblies
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.1.0…1.2.0
Note To use old projects with the latest MitoPilot release, please run the function MitoPilot::backwards_compatibility(). This will update the SQL database with any missing fields (columns).
MitoPilot 1.1.0
Released 2025-05-05. Container: macguigand/mitopilot:1.1.0
What’s Changed
- New assembler option: MitoFinder by @dmacguigan in https://github.com/Smithsonian/MitoPilot/pull/36
Full Changelog: https://github.com/Smithsonian/MitoPilot/compare/1.0.0…1.1.0
Note To use old projects with the latest MitoPilot release, please run the function MitoPilot::backwards_compatibility(). This will update the SQL database with any missing fields (columns).
