41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
from asyncio import run
|
|
from argparse import ArgumentParser, Namespace
|
|
from time import time
|
|
|
|
from locimend.model import infer_sequence, train_model
|
|
|
|
|
|
def parse_arguments() -> Namespace:
|
|
parser = ArgumentParser()
|
|
subparsers = parser.add_subparsers(dest="task")
|
|
parser_train = subparsers.add_parser("train")
|
|
parser_infer = subparsers.add_parser("infer")
|
|
parser_train.add_argument(
|
|
"data_file", help="FASTQ file containing the sequences with errors"
|
|
)
|
|
parser_train.add_argument(
|
|
"label_file", help="FASTQ file containing the sequences without errors"
|
|
)
|
|
parser_infer.add_argument("sequence", help="DNA sequence with errors")
|
|
return parser.parse_args()
|
|
|
|
|
|
async def execute_task(args):
|
|
if args.task == "train":
|
|
start_time = time()
|
|
train_model(data_file=args.data_file, label_file=args.label_file)
|
|
end_time = time()
|
|
print(f"Training time: {end_time - start_time}")
|
|
else:
|
|
prediction = await infer_sequence(sequence=args.sequence)
|
|
print(f"Error-corrected sequence: {prediction}")
|
|
|
|
|
|
def main() -> None:
|
|
args = parse_arguments()
|
|
run(execute_task(args))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|