From c477d3582d7275ce173f3ca5a60cc0c16e56ff71 Mon Sep 17 00:00:00 2001 From: Chris Wright Date: Mon, 23 Oct 2023 12:58:43 +0000 Subject: [PATCH] [CW-2686] Stub out auto models --- README.md | 29 ++++++- medaka/medaka.py | 68 +++++++++++++--- medaka/models.py | 94 ++++++++++++++++++++++ medaka/options.py | 93 +++++++++++++++++---- medaka/test/data/bc_model_scrape.bam | Bin 0 -> 78361 bytes medaka/test/data/bc_model_scrape.fastq.gz | Bin 0 -> 22587 bytes medaka/test/test_model.py | 23 ++++++ scripts/medaka_consensus | 20 ++++- scripts/medaka_haploid_variant | 16 +++- 9 files changed, 315 insertions(+), 28 deletions(-) create mode 100644 medaka/test/data/bc_model_scrape.bam create mode 100644 medaka/test/data/bc_model_scrape.fastq.gz diff --git a/README.md b/README.md index a0f1dfd..4e42556 100755 --- a/README.md +++ b/README.md @@ -110,7 +110,7 @@ not be provided by the user. **Using a GPU** -Since version 1.1.0 `medaka` uses Tensorflow 2.2, prior versions used Tensorflow 1.4. +Since version 1.1.0 `medaka` uses Tensorflow 2, prior versions used Tensorflow 1. For `medaka` 1.1.0 and higher installation from source or using `pip` can make immediate use of GPUs. However, note that the `tensorflow` package is compiled against specific versions of the NVIDIA CUDA and cuDNN libraries; users are directed to the @@ -214,6 +214,33 @@ For best results it is important to specify the correct model, `-m` in the above, according to the basecaller used. Allowed values can be found by running `medaka tools list\_models`. +**Recent basecallers** + +Recent basecaller versions annotate their output with their model version. +In such cases medaka can inspect the files and attempt to select an appropriate +model for itself. This typically works best in the case of BAM output from +basecallers. It will work also for FASTQ input provided the FASTQ has been +created from basecaller output using: + +``` +samtools fastq -T '*' dorado.bam | gzip -c > dorado.fastq.gz +``` + +The command `medaka consensus` will attempt to automatically determine a +correct model by inspecting its BAM input file. The helper scripts +`medaka_consensus` and `medaka_haploid_variant` will make similar attempts +from their FASTQ input. + +To inspect files for yourself, the command: + +``` +medaka tools resolve_model --auto_model +``` + +will print the model that automatic model selection will use. + +**For older basecallers and when automatic selection is unsuccessful** + Medaka models are named to indicate i) the pore type, ii) the sequencing device (MinION or PromethION), iii) the basecaller variant, and iv) the basecaller version, with the format: diff --git a/medaka/medaka.py b/medaka/medaka.py index 22a8e77..9166f26 100644 --- a/medaka/medaka.py +++ b/medaka/medaka.py @@ -20,6 +20,7 @@ import medaka.vcf import medaka.wrappers + class ResolveModel(argparse.Action): """Resolve model filename or ID into filename""" def __init__( @@ -36,7 +37,22 @@ def __call__(self, parser, namespace, values, option_string=None): except Exception as e: msg = "Error validating model from '--{}' argument: {}." raise RuntimeError(msg.format(self.dest, str(e))) - #TODO: verify the file is a model? + setattr(namespace, f"{self.dest}_was_given", True) + setattr(namespace, self.dest, model_fp) + + +class AutoModel(argparse.Action): + def __call__(self, parser, namespace, values, option_string=None): + variant, input_file = values + if variant not in {'consensus', 'variant'}: + raise ValueError("'TYPE' must be one of 'consensus' or 'variant'.") + variant = variant == 'variant' + model = medaka.models.model_from_basecaller(input_file, variant=variant) + try: + model_fp = medaka.models.resolve_model(model) + except Exception as e: + msg = "Error validating model from '--{}' argument: {}." + raise RuntimeError(msg.format(self.dest, str(e))) setattr(namespace, self.dest, model_fp) @@ -91,7 +107,7 @@ def check_read_groups(fname, rg=None): :raises: RuntimeError """ - with pysam.AlignmentFile(fname) as bam: + with pysam.AlignmentFile(fname, check_sq=False) as bam: # As of 13/12/19 pypi still has no wheel for pysam v0.15.3 so we # pinned to v0.15.2. However bioconda's v0.15.2 package # conflicts with the libdeflate they have so we are forced @@ -177,9 +193,13 @@ def _log_level(): def _model_arg(): parser = argparse.ArgumentParser( formatter_class=argparse.ArgumentDefaultsHelpFormatter, add_help=False) - parser.add_argument('--model', action=ResolveModel, + grp = parser.add_mutually_exclusive_group() + grp.add_argument('--model', action=ResolveModel, default=medaka.options.default_models['consensus'], help='Model to use.') + grp.add_argument('--auto_model', nargs=2, action=AutoModel, + metavar=("TYPE", "INPUT"), dest='model', + help="Automatically choose model according to INPUT. TYPE should be one of 'consensus' or 'variant'.") return parser @@ -245,18 +265,47 @@ def _chunking_feature_args(batch_size=100, chunk_len=10000, chunk_ovlp=1000): return parser -def _validate_common_args(args): +def _validate_common_args(args, parser): """Do some common argument validation.""" logger = medaka.common.get_named_logger('ValidArgs') + + # check BAM has some required fields, fail early if hasattr(args, 'bam') and args.bam is not None: RG = args.RG if hasattr(args, 'RG') else None CheckBam.check_read_groups(args.bam, RG) if RG is not None: msg = "Reads will be filtered to only those with RG tag: {}" - logger.info(msg.format(RG)) - # if model is default, resolve to file, save mess in help text - if hasattr(args, 'model') and args.model is not None: - args.model = medaka.models.resolve_model(args.model) + logger.debug(msg.format(RG)) + + # rationalise the model + if hasattr(args, 'model'): + # if --model was not given on the command-line try to guess from the + # the input file. otherwise leave alone + if ( + hasattr(args, 'bam') + and args.bam is not None + and not hasattr(args, 'model_was_given')): + # try to guess model using the input file, assume consensus + # assuming consensus might not be right, but this is not a change + # in behaviour from the historic. + logger.debug("Guessing model") + if hasattr(args, 'bam') and args.bam is not None: + model = medaka.models.model_from_basecaller( + args.bam, variant="consensus") + try: + args.model = medaka.models.resolve_model(model) + except Exception as e: + logger.warning( + "Failed to guess medaka model input file. Using default.") + else: + logger.debug( + f"Chosen model '{args.model}' for input '{args.bam}'.") + elif args.model is not None: + # TODO: why is this done? it will have been done in ResolveModel? + # the resolve_model function is idempotent so doesn't really + # matter too much + args.model = medaka.models.resolve_model(args.model) + logger.debug(f"Model is: {args.model}") def print_model_path(args): @@ -757,5 +806,6 @@ def main(): # TODO: is there a cleaner way to access this? parser.__dict__['_actions'][1].choices['tools'].print_help() else: - _validate_common_args(args) + # perform some post processing on the values, then run entry point + _validate_common_args(args, parser) args.func(args) diff --git a/medaka/models.py b/medaka/models.py index 4e38ad6..c5e53c3 100644 --- a/medaka/models.py +++ b/medaka/models.py @@ -1,9 +1,11 @@ """Creation and loading of models.""" +import itertools import os import pathlib import tempfile +import pysam import requests import medaka.common @@ -90,6 +92,98 @@ def resolve_model(model): raise RuntimeError("Model resolution failed") +def model_from_basecaller(fname, variant=False): + """Determine correct medaka model from basecaller output file. + + :param fname: a basecaller output (.sam/.bam/.cram/.fastq). + :param variant: whether to return variant model (otherwise consensus). + + There are slight differences is the search strategy for .bam and .fastq + files due to differences in what information is available in each. + + For .bam (and related) files the DS subfield of the read group header + is examined to find the "basecall_model=" key=value entry. The found + model is returned vebatim without fursther checks. + + For .fastq (and related) a RG:Z key=value in record comments is searched + in the first 100 records. Due to ambiguities in the representation the + search looks explicitely for known models. + """ + logger = medaka.common.get_named_logger("MdlInspect") + logger.info("Trying to find model") + try: + models = _model_from_bam(fname) + except Exception: + try: + models = _model_from_fastq(fname) + except Exception: + raise IOError( + "Failed to parse basecaller models from input file.") + + if len(models) != 1: + # TODO: this potentially conflicts with medaka's ability to use + # multiple data types. In that case a user can just + # explicitely provide the correct model. + raise ValueError( + "Input file did not contain precisely 1 basecaller " + "model reference.") + + basecaller = list(models)[0] + if basecaller not in medaka.options.basecaller_models.keys(): + raise KeyError( + "Unknown basecaller model. Please provide a medaka model " + "explicitely using --model.") + + consensus, var = medaka.options.basecaller_models[basecaller] + model = var if variant else consensus + if model is None: + txt = "variant" if variant else "consensus" + raise ValueError( + f"No {txt} model available for basecaller {basecaller}.") + return model + + +def _model_from_bam(fname): + """Search for basecaller models listed in a .bam.""" + models = set() + with pysam.AlignmentFile(fname, check_sq=False) as bam: + callers = [rg['DS'] for rg in bam.header['RG']] + logger.info(f"Found basecall models: {callers}") + for caller in callers: + models.add(caller.split("basecall_model=")[1].split()[0]) + return models + + +def _model_from_fastq(fname): + """Search for model files listed in a .fastq.""" + known_models = list(medaka.options.basecaller_models.keys()) + models = set() + with pysam.FastxFile(fname, 'r') as fastq: + for rec in itertools.islice(fastq, 100): + # model is embedded in RG:Z: tag of comment as + # __, but model has _ + # characters in also so search for known models + try: + read_group = rec.comment.split("RG:Z:")[1].split()[0] + for model in known_models: + if model in read_group: + models.add(model) + except Exception: + pass + if len(models) > 1: + # filter out any models without an `@`. These are likely FPs of + # the search above (there are unversioned models whose name + # is a substring of the versioned models). + unversioned = {m for m in models if '@' not in m} + versioned = {m for m in models if '@' in m} + remove = set() + for unver, ver in itertools.product(unversioned, versioned): + if unver in ver: + remove.add(unver) + models = models - remove + return models + + def open_model(fname): """Determine model type from model name. diff --git a/medaka/options.py b/medaka/options.py index 239a005..6a37d6f 100755 --- a/medaka/options.py +++ b/medaka/options.py @@ -7,16 +7,13 @@ import pkg_resources +# the models used by default for CLI entry points +default_models = { + 'consensus': 'r1041_e82_400bps_sup_v4.2.0', + 'variant': 'r1041_e82_400bps_sup_variant_v4.2.0' +} -model_subdir = 'data' -model_stores = ( - pkg_resources.resource_filename(__package__, model_subdir), - os.path.join( - str(pathlib.Path.home()), '.{}'.format(__package__), model_subdir) -) -model_url_template = \ - 'https://github.com/nanoporetech/{pkg}/raw/master/{pkg}/{subdir}/{fname}' - +# current models are those included in PyPI packages current_models = [ # r1041 e82 (kit14) consensus 'r1041_e82_400bps_hac_v4.2.0', @@ -25,6 +22,63 @@ 'r1041_e82_400bps_hac_variant_v4.2.0', 'r1041_e82_400bps_sup_variant_v4.2.0', ] + +# mapping from basecaller model names to medaka models. +# name: (consensus, variant) +# models here are automatically added to full archived list +basecaller_models = { + # R10.3 + 'dna_r10.3_450bps_hac': + ('r103_hac_g507', 'r103_hac_variant_g507'), + 'dna_r10.3_450bps_hac_prom': + ('r103_hac_g507', 'r103_hac_variant_g507'), + # R10.4.1 260bps + 'dna_r10.4.1_e8.2_260bps_hac': + ('r1041_e82_260bps_hac_g632', 'r1041_e82_260bps_hac_variant_g632'), + 'dna_r10.4.1_e8.2_260bps_hac@v4.0.0': + ('r1041_e82_260bps_hac_v4.0.0', None), + 'dna_r10.4.1_e8.2_260bps_hac@v4.1.0': + ('r1041_e82_260bps_hac_v4.1.0', 'r1041_e82_260bps_hac_variant_v4.1.0'), + 'dna_r10.4.1_e8.2_260bps_hac_prom': + ('r1041_e82_260bps_hac_g632', 'r1041_e82_260bps_hac_variant_g632'), + 'dna_r10.4.1_e8.2_260bps_sup@v4.0.0': + ('r1041_e82_260bps_sup_v4.0.0', None), + 'dna_r10.4.1_e8.2_260bps_sup@v4.1.0': + ('r1041_e82_260bps_sup_v4.1.0', 'r1041_e82_260bps_sup_variant_v4.1.0'), + # R10.4.1 400bps + 'dna_r10.4.1_e8.2_400bps_hac': + ('r1041_e82_400bps_hac_g632', 'r1041_e82_400bps_hac_variant_g632'), + 'dna_r10.4.1_e8.2_400bps_hac@v3.5.2': + ('r1041_e82_400bps_hac_g632', 'r1041_e82_400bps_hac_variant_g632'), + 'dna_r10.4.1_e8.2_400bps_hac@v4.0.0': + ('r1041_e82_400bps_hac_v4.0.0', None), + 'dna_r10.4.1_e8.2_400bps_hac@v4.1.0': + ('r1041_e82_400bps_hac_v4.1.0', 'r1041_e82_400bps_hac_variant_v4.1.0'), + 'dna_r10.4.1_e8.2_400bps_hac@v4.2.0': + ('r1041_e82_400bps_hac_v4.2.0', 'r1041_e82_400bps_hac_variant_v4.2.0'), + 'dna_r10.4.1_e8.2_400bps_hac_prom': + ('r1041_e82_400bps_hac_g632', 'r1041_e82_400bps_hac_variant_g632'), + 'dna_r10.4.1_e8.2_400bps_sup@v3.5.2': + ('r1041_e82_400bps_sup_g615', 'r1041_e82_400bps_sup_variant_g615'), + 'dna_r10.4.1_e8.2_400bps_sup@v4.0.0': + ('r1041_e82_400bps_sup_v4.0.0', None), + 'dna_r10.4.1_e8.2_400bps_sup@v4.1.0': + ('r1041_e82_400bps_sup_v4.1.0', 'r1041_e82_400bps_sup_variant_v4.1.0'), + 'dna_r10.4.1_e8.2_400bps_sup@v4.2.0': + ('r1041_e82_400bps_sup_v4.2.0', 'r1041_e82_400bps_sup_variant_v4.2.0'), + # R9.4.1 This is a little dodgy + # note: 'dna_r9.4.1_450bps_hac' is not present here as there is not a + # injective mapping. + 'dna_r9.4.1_e8_fast@v3.4': + ('r941_min_fast_g507', 'r941_min_fast_variant_g507'), + 'dna_r9.4.1_e8_hac@v3.3': + ('r941_min_hac_g507', 'r941_min_hac_variant_g507'), + 'dna_r9.4.1_e8_sup@v3.3': + ('r941_min_sup_g507', 'r941_min_sup_variant_g507')} + +# archived models are not included in packages but can be downloaded on the fly +# this list SHOULD NOT be added to, any new models should go into the above +# basecaller_models structure archived_models = [ # r9 consensus 'r941_sup_plant_g610', @@ -95,12 +149,23 @@ 'r941_e81_fast_variant_g514', 'r941_e81_hac_variant_g514', 'r941_e81_sup_variant_g514', ] -allowed_models = sorted(current_models + archived_models) -default_models = { - 'consensus': 'r1041_e82_400bps_sup_v4.2.0', - 'variant': 'r1041_e82_400bps_sup_variant_v4.2.0' -} +# add basecaller models, then deduplicate and sort +for models in basecaller_models.values(): + archived_models.extend((m for m in models if m is not None)) +allowed_models = sorted(set(current_models + archived_models)) + +# where we look for model files and store them +model_subdir = 'data' +model_stores = ( + pkg_resources.resource_filename(__package__, model_subdir), + os.path.join( + str(pathlib.Path.home()), '.{}'.format(__package__), model_subdir) +) +model_url_template = \ + 'https://github.com/nanoporetech/{pkg}/raw/master/{pkg}/{subdir}/{fname}' + +# suspect this isn't used anymore... alignment_params = { 'rle': "-M 5 -S 4 -O 2 -E 3", 'non-rle': "-M 2 -S 4 -O 4,24 -E 2,1"} diff --git a/medaka/test/data/bc_model_scrape.bam b/medaka/test/data/bc_model_scrape.bam new file mode 100644 index 0000000000000000000000000000000000000000..1b486a2b6d78679923e9ab4bdb336bfe5b090462 GIT binary patch literal 78361 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 z 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 b000000RIL6LPG)o8vp|U0000000000@i`fl literal 0 HcmV?d00001 diff --git a/medaka/test/data/bc_model_scrape.fastq.gz b/medaka/test/data/bc_model_scrape.fastq.gz new file mode 100644 index 0000000000000000000000000000000000000000..b6e251f6445813643f89adc12128155a541c5a80 GIT binary patch literal 22587 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 literal 0 HcmV?d00001 diff --git a/medaka/test/test_model.py b/medaka/test/test_model.py index a6e8174..30ca2e3 100755 --- a/medaka/test/test_model.py +++ b/medaka/test/test_model.py @@ -61,6 +61,29 @@ def _load_one(self, model_file): self.assertIsInstance(label_scheme, BaseLabelScheme) +class TestScrapBasecaller(unittest.TestCase): + + root_dir = os.path.abspath(os.path.dirname(__file__)) + bam = os.path.join(root_dir, 'data/bc_model_scrape.bam') + fastq = os.path.join(root_dir, 'data/bc_model_scrape.fastq.gz') + + def test_000_from_bam_consensus(self): + model = models.model_from_basecaller(self.bam, variant=False) + self.assertEqual(model, "r1041_e82_400bps_hac_v4.2.0") + + def test_001_from_bam_variant(self): + model = models.model_from_basecaller(self.bam, variant=True) + self.assertEqual(model, "r1041_e82_400bps_hac_variant_v4.2.0") + + def test_010_from_fastq_consensus(self): + model = models.model_from_basecaller(self.fastq, variant=False) + self.assertEqual(model, "r1041_e82_400bps_hac_v4.2.0") + + def test_011_from_fastq_variant(self): + model = models.model_from_basecaller(self.fastq, variant=True) + self.assertEqual(model, "r1041_e82_400bps_hac_variant_v4.2.0") + + class TestBuildModel(unittest.TestCase): def test_000_build_all_models(self): diff --git a/scripts/medaka_consensus b/scripts/medaka_consensus index ed1e4be..81e2f2b 100755 --- a/scripts/medaka_consensus +++ b/scripts/medaka_consensus @@ -36,6 +36,7 @@ QUALITIES=false iflag=false dflag=false xflag=false +mflag=false usage=" ${medaka_version} @@ -55,6 +56,8 @@ $(basename "$0") [-h] -i -d -m medaka model, (default: ${MODEL}). Choices: ${MODELS} Alternatively a .tar.gz/.hdf file from 'medaka train'. + If not provided, and automatic choice will be attempted based on + the contents of the input file. -f Force overwrite of outputs (default will reuse existing outputs). -x Force recreation of alignment index. -t number of threads with which to create features (default: 1). @@ -70,7 +73,7 @@ while getopts ':hi::d:o:gr:m:fxt:b:q' option; do o ) OUTPUT=$OPTARG;; g ) NOFILLGAPS=true;; r ) GAPFILLCHAR=$OPTARG;; - m ) MODEL=$(medaka tools resolve_model --model $OPTARG);; + m ) mflag=true; MODEL=$(medaka tools resolve_model --model $OPTARG);; f ) FORCE=true;; x ) xflag=true;; t ) THREADS=$OPTARG;; @@ -96,6 +99,17 @@ if ! $dflag; then exit 1; fi +if ! $mflag; then + echo "Attempting to automatically select model version." + model=$(medaka tools resolve_model --auto_model consensus "${BASECALLS}" 2>/dev/null || true) + if [[ "${model}" == "" ]] ; then + echo "WARNING: Failed to detect a model version, will use default: '${MODEL}'" + else + echo "SUCCESS: Automatic model selection chose model: '${model}'" + MODEL=${model} + fi +fi + echo "Checking program versions" echo "This is ${medaka_version}" medaka_version_report || exit 1 @@ -103,9 +117,9 @@ medaka_version_report || exit 1 if [[ ! -e "${OUTPUT}" ]]; then mkdir -p "${OUTPUT}" elif ${FORCE}; then - echo "Warning: Output will be overwritten (-f flag)" + echo "WARNING: Output will be overwritten (-f flag)" else - echo "Warning: Output ${OUTPUT} already exists, may use old results." + echo "WARNING: Output ${OUTPUT} already exists, may use old results." fi cd "${OUTPUT}" diff --git a/scripts/medaka_haploid_variant b/scripts/medaka_haploid_variant index 1f33114..f0a41b5 100755 --- a/scripts/medaka_haploid_variant +++ b/scripts/medaka_haploid_variant @@ -34,6 +34,7 @@ FORCE=false iflag=false rflag=false xflag=false +mflag=false usage=" ${medaka_version} @@ -49,6 +50,8 @@ $(basename "$0") [-h] -i -r -o output folder (default: medaka). -m medaka model, (default: ${MODEL}). Choices: $MODELS. + If not provided, and automatic choice will be attempted based on + the contents of the input file. -s Perform read realignment when annotating variants. -f Force overwrite of outputs (default will reuse existing outputs). -x Force recreation of alignment index. @@ -62,7 +65,7 @@ while getopts ':hi:r:o:m:sfxt:b:' option; do i ) iflag=true; BASECALLS=$(follow_link $OPTARG);; r ) rflag=true; REFERENCE=$(follow_link $OPTARG);; o ) OUTPUT=$OPTARG;; - m ) MODEL=$(medaka tools resolve_model --model $OPTARG);; + m ) mflag=true; MODEL=$(medaka tools resolve_model --model $OPTARG);; s ) ANNOT_OPTS="--dpsp";; f ) FORCE=true;; x ) xflag=true;; @@ -95,6 +98,17 @@ if $rleflag; then exit 1 fi +if ! $mflag; then + echo "Attempting to automatically select model version." + model=$(medaka tools resolve_model --auto_model variant "${BASECALLS}" 2>/dev/null || true) + if [[ "${model}" == "" ]] ; then + echo "WARNING: Failed to detect a model version, will use default: '${MODEL}'" + else + echo "SUCCESS: Automatic model selection chose model: '${model}'" + MODEL=${model} + fi +fi + if [[ "${MODEL}" != *"variant"* ]]; then echo "WARNING: The model '${MODEL}' is not recommended for use with this program." echo " Please select a model named with 'variant' in its name. It is"