Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
137 commits
Select commit Hold shift + click to select a range
2127113
Fix example script
JasonAHendry Sep 16, 2025
c1bd5ea
Add functionality for cleaning sample_type column
JasonAHendry Sep 16, 2025
1de3bea
Add first-draft of summarise command
JasonAHendry Sep 16, 2025
995e836
Merge remote-tracking branch 'origin/main' into feature/summary
berndbohmeier Oct 11, 2025
12dc6a5
Read in master metadata file
berndbohmeier Oct 13, 2025
b84a5d3
Make summarize work with new format and delve
berndbohmeier Oct 13, 2025
f075d69
Add sample summary statistic
berndbohmeier Oct 13, 2025
a892093
Add prevalence by region plot
berndbohmeier Oct 14, 2025
c608abb
Small improvements to summarize
berndbohmeier Oct 14, 2025
ccab72b
Add samples amplicons barplot
berndbohmeier Oct 15, 2025
188d28f
Add prevalence per region/year plot
berndbohmeier Oct 15, 2025
044d80c
Fix filtering of false positives
berndbohmeier Oct 15, 2025
b3d7ac1
Update wsaf false positive threashold
berndbohmeier Oct 15, 2025
317bd91
Move some files to utils experiment
berndbohmeier Oct 21, 2025
454da0b
Add some more docs and move code in summarize
berndbohmeier Oct 21, 2025
d8b8d75
Linter fixes and code structure
berndbohmeier Oct 22, 2025
a68b0d8
Make sample_type mandatory
berndbohmeier Oct 27, 2025
12e5edf
Do not seperate mutations by alt alleles
berndbohmeier Oct 27, 2025
6793b05
Limit prevalence to samples in master metadata file
berndbohmeier Oct 27, 2025
29b0222
Ensure we handle sample ids that are number better
berndbohmeier Oct 27, 2025
839b058
Store in inventory if samples are unknown
berndbohmeier Oct 27, 2025
24bcf86
Show legend in Sample statistic pie
berndbohmeier Oct 27, 2025
3d9d56b
Better text and labels for QC Summary
berndbohmeier Oct 28, 2025
3f39f5c
New colorscales for QC summary
berndbohmeier Oct 28, 2025
7e85cf5
Ensure prevalence is ordered by aa positions
berndbohmeier Oct 28, 2025
5200e38
Always report contaminated when over abs. thresh.
berndbohmeier Oct 29, 2025
3b1367e
Allow to group by all columns in metadata file
berndbohmeier Oct 29, 2025
7a85fd5
Allow to start dashboard in debug mode via env
berndbohmeier Oct 29, 2025
37e6f26
Don't check for depth files in summary
berndbohmeier Oct 29, 2025
a28b1a5
Add gene deletion detection
berndbohmeier Oct 30, 2025
601e325
First version on map in summary
berndbohmeier Oct 31, 2025
2891a7e
Sort drug resistance markers by prevalence
berndbohmeier Oct 31, 2025
9a9a7db
Use read mapping file instead of fastq file
berndbohmeier Oct 31, 2025
95c2412
Do not require vcf folder at the moment
berndbohmeier Oct 31, 2025
a9ac549
Fix error message of wrong exp meta data file
berndbohmeier Nov 4, 2025
b14c555
For gene deletion analysis, exclude contaminated samples
berndbohmeier Nov 4, 2025
995902e
Add site markers to map and settings file
berndbohmeier Nov 4, 2025
d89efd5
Add missing files
berndbohmeier Nov 4, 2025
77a0691
Add show neg control coverage in summary
berndbohmeier Nov 5, 2025
705a6c9
Add option to create summary without master file
berndbohmeier Nov 12, 2025
10a0d89
Improve messages for summarize
berndbohmeier Nov 12, 2025
e6f522a
Fix bug in error bars of summary
berndbohmeier Nov 12, 2025
4eaa204
Remove problematic mutations again
berndbohmeier Nov 12, 2025
cdc5e30
Add warnings to help with finding the right region names
berndbohmeier Nov 12, 2025
b56081c
Add init file to summarize module
berndbohmeier Nov 12, 2025
c82f8b7
Apply wording change for summary from code review
berndbohmeier Dec 4, 2025
4acbf6d
Clean up some things in summarize
berndbohmeier Dec 4, 2025
506b5fd
Add pydantic to dependencies
berndbohmeier Dec 5, 2025
3ec23f2
Rename missing to not_sequenced
berndbohmeier Dec 5, 2025
dedf24c
Use regex for matching of alt column names
berndbohmeier Dec 5, 2025
b389612
Also auto open browser after a delay for summary
berndbohmeier Dec 5, 2025
2b9d189
Ensure dtype of throughput table is int
berndbohmeier Dec 5, 2025
99fd811
Rename meta_data to metadata
berndbohmeier Dec 5, 2025
6178046
Remove summary command structure comment
berndbohmeier Dec 5, 2025
1dce302
Expose min coverage and max contamination values
berndbohmeier Dec 5, 2025
d9d70d8
Expose false-positive filter and consolidate prev calc
JasonAHendry Dec 7, 2025
f13d90b
Simplify experiment coapletion checks
JasonAHendry Dec 8, 2025
2cacbd9
Remove ExperimentResultsChecker class
JasonAHendry Dec 8, 2025
ebe4be2
A few typing fixes
berndbohmeier Dec 9, 2025
6a2a225
Remove fixing of leading zeros
berndbohmeier Dec 9, 2025
d69d5e2
Allow to only view with nomadic summarize command
berndbohmeier Dec 9, 2025
9e7dc49
Make summary general
berndbohmeier Dec 9, 2025
7b58bfd
Only plot data in summary if we have it
berndbohmeier Dec 19, 2025
d752536
Remove print statement
berndbohmeier Dec 19, 2025
6aaa86f
Ensure to only include field samples in metadata
berndbohmeier Dec 19, 2025
182ce36
Exit summary early if we have no field samples
berndbohmeier Dec 19, 2025
f5f0228
Ensure we print the experiment that has an metadata error
berndbohmeier Dec 19, 2025
645c1e4
More detailed output of what summary is loaded
berndbohmeier Jan 6, 2026
48136df
Ensure we set sample_id dtype when loading.
berndbohmeier Feb 2, 2026
72c04ef
Don't remove int columns for grouping
berndbohmeier Feb 2, 2026
25d41f4
Ensure master metadata file for summary has no dup
berndbohmeier Feb 2, 2026
58a84be
Fix gene deletions component
berndbohmeier Feb 2, 2026
22f410e
Merge remote-tracking branch 'origin/main' into feature/summary
berndbohmeier Feb 2, 2026
30696be
Fix parser used for metadata
berndbohmeier Feb 9, 2026
db8a1d9
Make sample_type not required again
berndbohmeier Feb 9, 2026
5ecbd6e
Merge remote-tracking branch 'origin/main' into feature/summary
berndbohmeier Feb 13, 2026
f468730
Update required version of bcftools
berndbohmeier Mar 4, 2026
3c084e0
Use vcf files for amino acid change prevalence
berndbohmeier Mar 5, 2026
a2edb4a
Add option to switch between bubble map and region map
berndbohmeier Mar 5, 2026
d1d743f
Sort aa changes by aa_pos not pos
berndbohmeier Mar 5, 2026
196cac6
Ensure we read sample id as str
berndbohmeier Mar 5, 2026
d5ad288
Formatter fixes
berndbohmeier Mar 5, 2026
4840de8
Update how maps are loaded
berndbohmeier Mar 9, 2026
0ce96b8
Ensure we only load experiment dirs we need
berndbohmeier Mar 10, 2026
1c934e8
Take out wrong asserts in summarize
berndbohmeier Mar 18, 2026
6f82c4e
Change default min coverage to 100
berndbohmeier May 18, 2026
c59cea1
Improve gene deletion code
berndbohmeier May 18, 2026
8ad076b
Set min number of samples to plot map to 10
berndbohmeier May 18, 2026
37c721d
Formating
berndbohmeier May 18, 2026
2005099
Set filter false positive params for summarize
berndbohmeier May 18, 2026
10246ba
Load shapeName for geojson from settings file
berndbohmeier Jun 22, 2026
9d698e9
Merge remote-tracking branch 'origin/main' into feature/summary
berndbohmeier Jul 20, 2026
0ea9550
Make ExperimentDirectories side effect free
berndbohmeier Jul 20, 2026
3edf1f3
Add auto find port function like in realtime to summary
berndbohmeier Jul 21, 2026
8d945d0
Refactored QC code of summarize
berndbohmeier Jul 22, 2026
09757c5
Better handle master metadata columns
berndbohmeier Jul 23, 2026
9167d62
Check common reference in summarize
berndbohmeier Aug 10, 2026
20dc994
Move more code to use Path
berndbohmeier Aug 10, 2026
0c467cd
Fix show map functionality with metadata col rename
berndbohmeier Aug 10, 2026
e5af0e2
New aa changes file format for summarize
berndbohmeier Aug 19, 2026
98c08fd
Add pytest-snapshot to environment
berndbohmeier Aug 19, 2026
cbc0ad5
Remove profiling code
berndbohmeier Aug 19, 2026
949ee8d
Apply various fixes from ruffs new default rules
berndbohmeier Aug 25, 2026
565331b
Update time code
berndbohmeier Aug 25, 2026
c589358
Fix order of check for metadata
berndbohmeier Aug 25, 2026
ff3e85c
Fix don't report user warning sample types
berndbohmeier Aug 25, 2026
a8e8339
Fix generator in pytestest parametrize
berndbohmeier Aug 25, 2026
c0674d2
Add download of reference genome in github action
berndbohmeier Aug 25, 2026
d88f5e0
Skip csq test on CI for now
berndbohmeier Aug 25, 2026
79a3458
Fix properly close the excel file
berndbohmeier Aug 25, 2026
ca86544
Fix use the right wsaf tag
berndbohmeier Aug 25, 2026
2c0fb07
Update file format and dir structure for summarize
berndbohmeier Aug 26, 2026
0b0feaf
Write nt changes file in realtime
berndbohmeier Aug 26, 2026
e945db0
Fix avoid devision by 0 in prevalence calc
berndbohmeier Aug 26, 2026
199a1ac
Format
berndbohmeier Aug 26, 2026
308bea3
Ensure all rows are present in throughput
berndbohmeier Aug 27, 2026
4bf1cd4
Ensure correct column is cast to str in load metadata
berndbohmeier Aug 27, 2026
3cb878d
Warnings if samples have different metadata
berndbohmeier Aug 27, 2026
4254f16
Remove StrEnum, which needs python 3.11
berndbohmeier Aug 27, 2026
ecdc039
Split up coverage functions
berndbohmeier Aug 27, 2026
8c92227
Only run check if any variant
berndbohmeier Aug 27, 2026
46304f8
Move encode barcodes in own function next to decode
berndbohmeier Aug 27, 2026
8b2f92c
Move sample seperator close to encode/decode function
berndbohmeier Aug 28, 2026
689f193
Document variant code
berndbohmeier Aug 28, 2026
89edc8e
Update tooltip of experiment qc
berndbohmeier Aug 28, 2026
8bdc811
Render n values for experiment qc
berndbohmeier Aug 28, 2026
354efd3
Add mixed, wt info to prevalence plot
berndbohmeier Aug 28, 2026
da9cfd1
Fix show only amplicons in bed file
berndbohmeier Aug 28, 2026
9070d28
Small fixes
berndbohmeier Aug 28, 2026
414a927
Remove unnessary print
berndbohmeier Aug 28, 2026
364beb8
Add statsmodels to dependencies
berndbohmeier Aug 28, 2026
7822f5b
Fix mapping code, handling of files and mutations
berndbohmeier Aug 28, 2026
f78dbcb
Add missing pydantic to dev environment
berndbohmeier Aug 28, 2026
50cc526
Ensure nomadic summarize also works without a workspace
berndbohmeier Sep 3, 2026
b927fad
Improve user facing errors for summarize
berndbohmeier Sep 3, 2026
0a699a5
Add missing __init__ file
berndbohmeier Sep 3, 2026
7f69fa1
Fix import error
berndbohmeier Sep 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 8 additions & 6 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,7 @@ jobs:
uses: actions/cache@v3
with:
path: ${{ env.CONDA }}/envs
key:
conda-${{ runner.os }}--${{ runner.arch }}--${{
key: conda-${{ runner.os }}--${{ runner.arch }}--${{
steps.get-date.outputs.today }}-${{
hashFiles('environments/dev.yml') }}-${{ env.CACHE_NUMBER
}}
Expand All @@ -49,8 +48,7 @@ jobs:
id: cache

- name: Update environment
run:
conda env update -n nomadic-dev -f environments/dev.yml
run: conda env update -n nomadic-dev -f environments/dev.yml
if: steps.cache.outputs.cache-hit != 'true'

- name: Conda info
Expand All @@ -62,15 +60,19 @@ jobs:
run: |
pip install . --no-deps

# Currently not working because links have changed, enable once fixed
# - name: Download reference genome
# run: |
# nomadic download -r Pf3D7

- name: Run tests
run: |
pytest

- name: Smoke test nomadic
run: |
nomadic --help


ruff:
runs-on: ubuntu-latest
steps:
Expand Down
6 changes: 4 additions & 2 deletions build/conda/meta.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,17 +29,19 @@ requirements:
- numpy
- pandas
- openpyxl
- statsmodels
- seaborn
- click
- platformdirs
- dash
- pysam
- pyyaml
- i18nice
- pydantic
# tools
- minimap2
- samtools >=1.20
- bcftools >=1.20
- samtools >=1.23
- bcftools >=1.23
- bedtools
- delve-bio =0.3.*
- rsync
Expand Down
8 changes: 6 additions & 2 deletions environments/dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ channels:
dependencies:
- python >= 3.10
- minimap2
- samtools >=1.20
- bcftools >=1.20
- samtools >=1.23
- bcftools >=1.23
- htslib
- bedtools
- delve-bio =0.3.*
Expand All @@ -16,11 +16,13 @@ dependencies:
- pandas
- openpyxl
- numpy
- statsmodels
- seaborn
- click
- platformdirs
- pyyaml
- i18nice
- pydantic
- black
- flake8
- pip
Expand All @@ -29,3 +31,5 @@ dependencies:
- mkdocs-material
- pymdown-extensions
- rsync
- pip:
- pytest-snapshot
6 changes: 4 additions & 2 deletions environments/run.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,22 @@ channels:
dependencies:
- python >= 3.10
- minimap2
- samtools >=1.20
- bcftools >=1.20
- samtools >=1.23
- bcftools >=1.23
- delve-bio =0.3.*
- htslib
- bedtools
- dash
- pandas
- openpyxl
- numpy
- statsmodels
- pysam
- seaborn
- click
- platformdirs
- pyyaml
- i18nice
- pydantic
- pip
- rsync
7 changes: 7 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
[build-system]
requires = ["setuptools>=42.0", "wheel"]
build-backend = "setuptools.build_meta"

[tool.ruff.lint]
ignore = [
"UP045", # To me, Optional seems shorter
"RUF012", # will fix this later
"C408", # Would need a lot of changes, fix maybe later
]
3 changes: 1 addition & 2 deletions scripts/run_realtime.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
# Example of how to run nomadic realtime
# 2023/07/12, J.Hendry

nomadic realtime \
-e 0000-00-00_example \
nomadic realtime 0000-00-00_example \
-f example_data/minknow/fastq_pass \
-m example_data/metadata/sample_info.csv \
-b example_data/beds/nomads8.amplicons.bed --call
3 changes: 2 additions & 1 deletion scripts/simulate_sequencing.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@
# 2023/06/01, J. Hendry

import os
import shutil
import random
import shutil
import time

import pandas as pd

AWAITED_FASTQ_DIR = "example_data/awaited_fastqs"
Expand Down
5 changes: 5 additions & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,12 @@ install_requires =
numpy
pandas
openpyxl
statsmodels
platformdirs
pyyaml
seaborn
i18nice
pydantic
Comment thread
berndbohmeier marked this conversation as resolved.

python_requires = >=3.10
zip_safe = no
Expand All @@ -32,6 +34,9 @@ zip_safe = no
nomadic.realtime.dashboard =
assets/*
translations/*
nomadic.summarize.dashboard =
assets/*
translations/*
nomadic.start =
data/**

Expand Down
7 changes: 4 additions & 3 deletions src/nomadic/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,21 @@

import click

from nomadic.configure.commands import configure
from nomadic.backup.commands import backup
from nomadic.configure.commands import configure
from nomadic.dashboard.commands import dashboard
from nomadic.download.commands import download
from nomadic.process.commands import process
from nomadic.realtime.commands import realtime
from nomadic.share.commands import share
from nomadic.start.commands import start
from nomadic.summarize.commands import summarize


# From: https://stackoverflow.com/questions/47972638/how-can-i-define-the-order-of-click-sub-commands-in-help
class OrderedGroup(click.Group):
def __init__(self, name=None, commands=None, **attrs):
super(OrderedGroup, self).__init__(name, commands, **attrs)
super().__init__(name, commands, **attrs)
#: the registered subcommands by their exported names.
self.commands = commands or OrderedDict()

Expand All @@ -30,14 +31,14 @@ def cli():
Mobile sequencing and analysis in real-time

"""
pass


cli.add_command(start)
cli.add_command(download)
cli.add_command(realtime)
cli.add_command(process)
cli.add_command(dashboard)
cli.add_command(summarize)
cli.add_command(share)
cli.add_command(backup)
cli.add_command(configure)
1 change: 0 additions & 1 deletion src/nomadic/configure/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ def configure():
"""
Configure different nomadics functionality. This mostly sets standard options in '.config.yaml' that can be overwritten from the command line.
"""
pass


@configure.command(short_help="Configure the nomadic share command.")
Expand Down
39 changes: 8 additions & 31 deletions src/nomadic/dashboard/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,41 +2,16 @@
from typing import Optional

from nomadic.realtime.dashboard.builders import CallingRTDashboard, MappingRTDashboard
from nomadic.util.experiment import ExperimentDirectories
from nomadic.util.metadata import find_metadata
from nomadic.util.regions import RegionBEDParser
from nomadic.util.experiment import ExperimentDirectories, find_metadata, find_regions
from nomadic.util.settings import load_settings


def find_regions(input_dir: str) -> RegionBEDParser:
"""
Given an experiment directory, search for the metadata CSV file in thee
expected location

TODO: Bad duplication from above, can write inner function
"""

metadata_dir = os.path.join(input_dir, "metadata")
beds = [
f"{metadata_dir}/{file}"
for file in os.listdir(metadata_dir)
if file.endswith(".bed") and not file.endswith(".lowcomplexity_mask.bed")
] # TODO: what about no-suffix files?

if len(beds) != 1: # Could alternatively load and LOOK
raise FileNotFoundError(
f"Expected one region BED file (*.bed) at {metadata_dir}, but found {len(beds)}."
)

return RegionBEDParser(beds[0])


def variant_calling_performed(expt_dirs: ExperimentDirectories) -> bool:
"""
Check if the variant calling TSV is present
"""

return os.path.exists(expt_dirs.get_summary_files().variants)
return os.path.exists(expt_dirs.get_summary_files().aa_changes)


def main(input_dir: str, host: str, port: Optional[int] = None) -> None:
Expand All @@ -57,8 +32,10 @@ def main(input_dir: str, host: str, port: Optional[int] = None) -> None:
"""

metadata = find_metadata(input_dir)
expt_dirs = ExperimentDirectories(input_dir, metadata)
regions = find_regions(input_dir)
expt_dirs = ExperimentDirectories(
input_dir, metadata.barcodes, os.path.basename(regions.path)
)
settings = load_settings(expt_dirs.get_settings_file())

if settings is not None:
Expand Down Expand Up @@ -94,15 +71,15 @@ def main(input_dir: str, host: str, port: Optional[int] = None) -> None:
print(" Variant calling: True")
dashboard = CallingRTDashboard(
**shared_kwargs,
variant_csv=summary_files.variants,
variant_csv=summary_files.aa_changes,
)
else:
print(" Variant calling: False")
dashboard = MappingRTDashboard(**shared_kwargs)
print("Done.")

print("")
print()
print("Launching dashboard (press CNTRL+C to exit):")
print("")
print()

dashboard.run(debug=False, host=host, port=port)
1 change: 1 addition & 0 deletions src/nomadic/download/commands.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import click

from .references import REFERENCE_COLLECTION


Expand Down
4 changes: 2 additions & 2 deletions src/nomadic/download/corrections.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from typing import List
from dataclasses import dataclass

from nomadic.util.fasta import load_fasta_as_dict, write_fasta_from_dict


Expand All @@ -19,7 +19,7 @@ class NucleotideChange:
)


def update_reference_genome(fasta_path: str, mutations: List[NucleotideChange]) -> None:
def update_reference_genome(fasta_path: str, mutations: list[NucleotideChange]) -> None:
"""
Update a reference genome by reverting mutations; do this IN PLACE

Expand Down
6 changes: 2 additions & 4 deletions src/nomadic/download/downloader.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def download_fasta(self, create_mask: bool = False):
url=self.ref.fasta_url, filename=self.ref.fasta_path
)
print("Done.")
print("")
print()
else:
print("Already downloaded FASTA.")

Expand Down Expand Up @@ -82,9 +82,7 @@ def _standardise_gff(self) -> None:
# Standardise
gff_df = load_gff(self.ref.gff_path)
gff_df.query("feature in @KEEP_FIELDS", inplace=True)
gff_df["feature"] = [
to_gff3[f] if f in to_gff3 else f for f in gff_df["feature"]
]
gff_df["feature"] = [to_gff3.get(f, f) for f in gff_df["feature"]]

# Rename attributes to what bcftools expects
# see https://samtools.github.io/bcftools/bcftools-man.html#csq
Expand Down
2 changes: 1 addition & 1 deletion src/nomadic/download/main.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from .corrections import DHPS, update_reference_genome
from .downloader import ReferenceDownloader
from .references import REFERENCE_COLLECTION
from .corrections import DHPS, update_reference_genome


def main(reference_name: str, all: bool = False) -> None:
Expand Down
3 changes: 1 addition & 2 deletions src/nomadic/download/references.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import os
from nomadic.util.exceptions import ReferenceGenomeMissingError
from abc import ABC, abstractmethod

from nomadic.util.dirs import user_data_dir

from nomadic.util.exceptions import ReferenceGenomeMissingError

# ================================================================
# Base classes for reference sequences
Expand Down
7 changes: 2 additions & 5 deletions src/nomadic/map/mappers.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import os
import subprocess
import shlex
import subprocess
from abc import ABC, abstractmethod


# ================================================================
# Define abstract base class for different mapping
# algorithms
Expand Down Expand Up @@ -41,11 +40,10 @@ def map_from_fastqs(self, fastq_dir=None, fastq_paths=None):

"""
if fastq_dir is not None:
fastq_dir = fastq_dir
self.input_fastqs = [
f"{fastq_dir}/{fastq}"
for fastq in os.listdir(fastq_dir)
if fastq.endswith(".fastq") or fastq.endswith(".fastq.gz")
if fastq.endswith((".fastq", ".fastq.gz"))
]
elif fastq_paths is not None:
self.input_fastqs = fastq_paths
Expand All @@ -57,7 +55,6 @@ def _define_mapping_command(self, output_bam, *, threads: int, flags):
"""
Define the command for the mapping algorithm
"""
pass

def run(self, output_bam: str, threads: int, verbose=False):
"""
Expand Down
Loading
Loading