From 47b578f2b307f9cefaece81891a9a32662068838 Mon Sep 17 00:00:00 2001 From: Chris Maffeo <cmaffeo2@illinois.edu> Date: Thu, 12 Dec 2019 17:22:30 -0600 Subject: [PATCH] Set origin of arbd box using structure in mrdna script --- bin/mrdna | 6 ++++-- mrdna/model/arbdmodel.py | 12 ++++++++++-- mrdna/segmentmodel.py | 1 + 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/bin/mrdna b/bin/mrdna index 4e603d7..f539741 100755 --- a/bin/mrdna +++ b/bin/mrdna @@ -9,6 +9,7 @@ import re import pathlib from mrdna import __version__ as __version__ from mrdna.simulate import multiresolution_simulation as simulate +import numpy as np """Easy multiresolution simulations of DNA nanotechnology objects using ARBD""" @@ -107,8 +108,9 @@ def main(): model = read_model( str(infile), debye_length=args.debye_length, temperature=args.temperature ) if args.dimensions is None: - model.dimensions = [max(f,2500) - for f in model.dimensions_from_structure( padding_factor=2.5 )] + dim = model.dimensions_from_structure( padding_factor=2.5 ) + model.dimensions = dim + model.origin = model.get_center()-0.5*np.array(model.dimensions) else: model.dimensions = args.dimensions diff --git a/mrdna/model/arbdmodel.py b/mrdna/model/arbdmodel.py index 197bddb..dd173d2 100644 --- a/mrdna/model/arbdmodel.py +++ b/mrdna/model/arbdmodel.py @@ -628,10 +628,11 @@ class PdbModel(Transformable, Parent): class ArbdModel(PdbModel): - def __init__(self, children, dimensions=(1000,1000,1000), temperature=291, timestep=50e-6, cutoff=50, decompPeriod=10000, pairlistDistance=None, nonbondedResolution=0.1, remove_duplicate_bonded_terms=True, extra_bd_file_lines=""): + def __init__(self, children, dimensions=(1000,1000,1000), origin=None, temperature=291, timestep=50e-6, cutoff=50, decompPeriod=10000, pairlistDistance=None, nonbondedResolution=0.1, remove_duplicate_bonded_terms=True, extra_bd_file_lines=""): PdbModel.__init__(self, children, dimensions, remove_duplicate_bonded_terms) self.temperature = temperature + self.origin = origin self.timestep = timestep self.cutoff = cutoff @@ -837,8 +838,15 @@ class ArbdModel(PdbModel): params['outputPeriod'] = outputPeriod for k,v in zip('XYZ', self.dimensions): - params['origin'+k] = -v*0.5 params['dim'+k] = v + + if self.origin is None: + for k,v in zip('XYZ', self.dimensions): + params['origin'+k] = -v*0.5 + else: + for k,v in zip('XYZ', self.origin): + params['origin'+k] = v + params['pairlistDistance'] -= params['cutoff'] diff --git a/mrdna/segmentmodel.py b/mrdna/segmentmodel.py index 0273c5d..bebf3c7 100644 --- a/mrdna/segmentmodel.py +++ b/mrdna/segmentmodel.py @@ -1541,6 +1541,7 @@ class SegmentModel(ArbdModel): def __init__(self, segments=[], local_twist=True, escapable_twist=True, max_basepairs_per_bead=7, max_nucleotides_per_bead=4, + origin = None, dimensions=(5000,5000,5000), temperature=291, timestep=50e-6, cutoff=50, decompPeriod=10000, pairlistDistance=None, -- GitLab