All checks were successful
NSBDiagnosisToolkit/pipeline/head This commit looks good
70 lines
1.9 KiB
Python
70 lines
1.9 KiB
Python
import argparse
|
|
import asyncio
|
|
import datetime
|
|
from os import path
|
|
import os
|
|
|
|
from nsbdiagnosistoolkit.cli import aggregator
|
|
from nsbdiagnosistoolkit.engine.data.genomics import NamedString
|
|
from nsbdiagnosistoolkit.engine.local.abif import read_abif
|
|
from nsbdiagnosistoolkit.engine.local.csv import write_mlst_profiles_as_csv
|
|
from nsbdiagnosistoolkit.engine.local.fasta import read_fasta
|
|
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument(
|
|
"--run-name", "-name",
|
|
dest="run_name",
|
|
required=False,
|
|
default=datetime.datetime.now().strftime(r"%Y%m%d%H%M%S"),
|
|
type=str,
|
|
help="The name of the run. Will use a date and time string if not provided."
|
|
)
|
|
parser.add_argument(
|
|
"--fasta", "-fa", "-fst",
|
|
nargs="+",
|
|
action='extend',
|
|
dest="fastas",
|
|
required=False,
|
|
default=[],
|
|
type=str,
|
|
help="The FASTA files to process. Multiple can be listed."
|
|
)
|
|
parser.add_argument(
|
|
"--abif", "-abi", "-ab1",
|
|
action='extend',
|
|
dest="abifs",
|
|
required=False,
|
|
default=[],
|
|
type=str,
|
|
help="The ABIF files to process. Multiple can be listed."
|
|
)
|
|
parser.add_argument(
|
|
"--institut-pasteur-mlst",
|
|
"-ipdbmlst",
|
|
dest="institut_pasteur_db",
|
|
required=False,
|
|
default=None,
|
|
type=str,
|
|
help="The Institut Pasteur MLST database to use."
|
|
)
|
|
parser.add_argument(
|
|
"out",
|
|
default="./.",
|
|
help="The output folder. Files will be named by the provided (or default) run name."
|
|
)
|
|
|
|
|
|
def cli():
|
|
args = parser.parse_args()
|
|
gen_strings = aggregator.aggregate_sequences(args.fastas, args.abifs)
|
|
os.makedirs(args.out, exist_ok=True)
|
|
if args.institut_pasteur_db is not None:
|
|
mlst_profiles = aggregator.profile_all_genetic_strings(
|
|
gen_strings, args.institut_pasteur_db)
|
|
asyncio.run(write_mlst_profiles_as_csv(
|
|
asyncio.run(mlst_profiles), str(path.join(args.out, "MLST_" + args.run_name + ".csv"))))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
cli() |