diff --git a/mrdna/model/arbdmodel.py b/mrdna/model/arbdmodel.py index 17afaf7e5fd14349c8e09cd399a5c881414ec215..cb85a16dabbdf20a054dc38e55a4788fdbdace88 100644 --- a/mrdna/model/arbdmodel.py +++ b/mrdna/model/arbdmodel.py @@ -481,7 +481,7 @@ class PdbModel(Transformable, Parent): def _updateParticleOrder(self): pass - def writePdb(self, filename): + def writePdb(self, filename, beta_from_fixed=False): if self.cacheInvalid: self._updateParticleOrder() with open(filename,'w') as fh: @@ -501,6 +501,9 @@ class PdbModel(Transformable, Parent): idx = "{:>6d}".format(idx) data['idx'] = idx + if beta_from_fixed: + data['beta'] = 1 if 'fixed' in p.__dict__ else 0 + pos = p.collapsedPosition() dig = [max(int(np.log10(np.abs(x)+1e-6)//1),0)+1 for x in pos] for d in dig: assert( d <= 7 ) @@ -1105,12 +1108,12 @@ cellBasisVector3 0 0 {cellZ} if {{$nLast == 0}} {{ temperature 300 - # fixedAtoms on - # fixedAtomsForces on - # fixedAtomsFile $prefix.pdb - # fixedAtomsCol B - # minimize 2400 - # fixedAtoms off + fixedAtoms on + fixedAtomsForces on + fixedAtomsFile $prefix.fixed.pdb + fixedAtomsCol B + minimize 2400 + fixedAtoms off minimize 2400 }} else {{ bincoordinates {output_directory}/$prefix-$nLast.restart.coor @@ -1127,6 +1130,7 @@ run {num_steps:d} if output_directory == '': output_directory='.' self.writePdb( output_name + ".pdb" ) + self.writePdb( output_name + ".fixed.pdb", beta_from_fixed=True ) self.writePsf( output_name + ".psf" ) self.write_namd_configuration( output_name, output_directory = output_directory ) os.sync() diff --git a/mrdna/readers/segmentmodel_from_lists.py b/mrdna/readers/segmentmodel_from_lists.py index a83645be41b99b2692cad1bae63218fe87e193ed..8d53e2434671663a419a6c8922e86c6aab074202 100644 --- a/mrdna/readers/segmentmodel_from_lists.py +++ b/mrdna/readers/segmentmodel_from_lists.py @@ -70,18 +70,6 @@ def basepairs_and_stacks_to_helixmap(basepairs,stacks_above): return helixmap, helixrank, is_fwd -def SegmentModelFromPdb(*args,**kwargs): - u = mda.Universe(*args,**kwargs) - for a in u.select_atoms("resname DT* and name C7").atoms: - a.name = "C5M" - - ## Find basepairs and base stacks - centers,transforms = find_base_position_orientation(u) - bps = find_basepairs(u, centers, transforms) - stacks = find_stacks(u, centers, transforms) - - ## Build map from residue index to helix index - def set_splines(seg, coordinates, hid, hmap, hrank, fwd, orientation=None): maxrank = np.max( hrank[hmap==hid] ) if maxrank == 0: diff --git a/mrdna/readers/segmentmodel_from_pdb.py b/mrdna/readers/segmentmodel_from_pdb.py index 3cbb683de5a95be8f0fa76ea565e449b7cf12b76..e00e3d763bd5c16f6776c599195bd0816a31c332 100644 --- a/mrdna/readers/segmentmodel_from_pdb.py +++ b/mrdna/readers/segmentmodel_from_pdb.py @@ -258,6 +258,8 @@ def SegmentModelFromPdb(*args,**kwargs): bps = find_basepairs(u, centers, transforms) stacks = find_stacks(u, centers, transforms) + pdb.set_trace() + ## Find three-prime ends three_prime = -np.ones(bps.shape, dtype=np.int) for s in u.segments: diff --git a/mrdna/segmentmodel.py b/mrdna/segmentmodel.py index af5009196f6a354892f7129e862125f5744e8385..4dee89b779c0252a198f5bd5bcee56c1d54f101e 100644 --- a/mrdna/segmentmodel.py +++ b/mrdna/segmentmodel.py @@ -638,7 +638,6 @@ class Segment(ConnectableElement, Group): if scale is not None and scale != 1: for a in atoms: a.position = scale*a.position - a.fixed = 1 atoms.position = pos - atoms.atoms_by_name["C1'"].collapsedPosition() else: if scale is not None and scale != 1: @@ -649,6 +648,7 @@ class Segment(ConnectableElement, Group): for a in atoms: if a.name[-1] in ("'","P","T"): a.position = scale*(a.position-r0) + r0 + else: a.fixed = 1 atoms.position = pos