From fdc216005a05ed4bb56db021a432c2bf93046ca6 Mon Sep 17 00:00:00 2001 From: Chris Maffeo <cmaffeo2@illinois.edu> Date: Tue, 28 Aug 2018 12:59:34 -0500 Subject: [PATCH] Added dnarbd binary to repository for command line invocation --- bin/dnarbd | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ setup.py | 1 + 2 files changed, 68 insertions(+) create mode 100644 bin/dnarbd diff --git a/bin/dnarbd b/bin/dnarbd new file mode 100644 index 0000000..703c3d8 --- /dev/null +++ b/bin/dnarbd @@ -0,0 +1,67 @@ +#! /usr/bin/env python +# -*- coding: utf-8 -*- + +import argparse +import re +from dnarbd.simulate import multiresolution_simulation as simulate + +parser = argparse.ArgumentParser(prog="dnarbd", + description="""Easy multiresolution simulations of DNA nanotechnology objects using ARBD""") + +parser.add_argument('-o','--output-prefix', type=str, default=None, + help="Name for your job's output") +parser.add_argument('-d','--directory', type=str, default=None, + help='Directory for simulation; does not need to exist yet') +parser.add_argument('-g','--gpu', type=int, default=0, + help='GPU for simulation; check nvidia-smi for availability') +parser.add_argument('--coarse-steps', type=int, default=1e7, + help='Simulation steps for coarse model (200 fs/step)') +parser.add_argument('--fine-steps', type=int, default=1e7, + help='Simulation steps for fine model (50 fs/step)') +parser.add_argument('--backbone-scale', type=float, default=1.0, + help='Factor to scale DNA backbone in atomic model; try 0.25 to avoid clashes for atomistic simulations') + +parser.add_argument('input_file', type=str, + help="""Any of the following: + (1) a cadnano JSON file; + (2) a vHelix Maya (.ma) file; + (3) an atomic PDB file""") + +args = parser.parse_args() + +if __name__ == '__main__': + + infile = args.input_file + try: + re_result = re.match("(.*)\.([^.]+)",infile) + prefix = re_result.group(1) + extension = re_result.group(2).lower() + except: + raise Exception("Unrecognized input file '{}'".format(infile)) + + if extension == 'json': + from dnarbd.readers import read_cadnano as read_model + elif extension == 'ma': + from dnarbd.readers import read_vhelix as read_model + elif extension == 'pdb': + from dnarbd.readers import read_atomic_pdb as read_model + else: + raise Exception("Unrecognized input file '{}'".format(infile)) + + model = read_model( infile ) + + run_args = dict( + model = model, + output_name = args.output_prefix, + job_id = "job-"+args.output_prefix, + directory = args.directory, + gpu = args.gpu, + coarse_steps = args.coarse_steps, + fine_steps = args.fine_steps, + backbone_scale = args.backbone_scale + ) + + if args.output_prefix == None: + run_args['output_name'] = prefix + + simulate( **run_args ) diff --git a/setup.py b/setup.py index af491de..9cf1532 100644 --- a/setup.py +++ b/setup.py @@ -19,6 +19,7 @@ setuptools.setup( url="https://gitlab.engr.illinois.edu/tbgl/tools/dnarbd", packages=setuptools.find_packages(), include_package_data=True, + scripts=['bin/dnarbd'], install_requires=( 'numpy>=1.14', 'scipy>=1.1', -- GitLab