def test_rna_frame1to10_frame10(self): ''' test a dcd based on a rna molecule of 10 frames write the 10th frame ''' # # # pdbFileName = DataPath+'rna-1to10.pdb' dcdFileName = moduleDataPath+'test-results/rna-1to10-writedcd_step-test.dcd' # nnatoms = 1 frame = 9 step = 1 self.o.read_pdb(pdbFileName) #fp=dcdio.open_dcd_write(dcdFileName) #self.o.write_dcd_header(fp, nnatoms) fp = self.o.open_dcd_write(dcdFileName) self.o.write_dcd_step(fp, frame, step) dcdio.close_dcd_write(fp) # otest = sasmol.SasMol(0) otest.read_dcd(dcdFileName) result_coor = otest.coor() sum_result_coor = sum(sum(sum(result_coor))) print '\nresult_coor \n',result_coor self.assertEqual(len(result_coor[0]),10632) expected_sample_coor = numpy.array([-6.392, 14.348, 20.914],floattype) sum_expected_coor = -42837.531 self.assert_list_almost_equal(expected_sample_coor,result_coor[0][10631], self.prcsn) self.assertAlmostEqual(sum_result_coor, sum_expected_coor, self.prcsn) os.remove(dcdFileName)
def test_1CRN(self): ''' test a dcd based on a small protein (crambin) ''' # pdbFileName = DataPath+'1CRN.pdb' dcdFileName = moduleDataPath+'test-results/1CRN-writedcd_step-test.dcd' # nnatoms = 1 frame = 0 step = 1 self.o.read_pdb(pdbFileName) #fp=dcdio.open_dcd_write(dcdFileName) #self.o.write_dcd_header(fp, nnatoms) fp = self.o.open_dcd_write(dcdFileName) self.o.write_dcd_step(fp, frame, step) dcdio.close_dcd_write(fp) # otest = sasmol.SasMol(0) otest.read_dcd(dcdFileName) result_coor = otest.coor() sum_result_coor = sum(sum(sum(result_coor))) print '\nresult_coor \n',result_coor os.remove(dcdFileName) self.assertEqual(len(result_coor[0]),327) expected_sample_coor = numpy.array([9.555, 2.856, 3.730],floattype) sum_expected_coor = 8509.587 self.assert_list_almost_equal(expected_sample_coor,result_coor[0][100], self.prcsn) self.assertAlmostEqual(sum_result_coor, sum_expected_coor, self.prcsn)
def test_2AAD_frame3(self): ''' test a dcd with 3 frames based on a 2-aa pdb write the 3rd frame ''' # pdbFileName = DataPath+'2AAD-1to3.pdb' dcdFileName = moduleDataPath+'test-results/2AAD-1to3-writedcd_step-test.dcd' # nnatoms = 1 frame = 2 step = 1 self.o.read_pdb(pdbFileName) #fp=dcdio.open_dcd_write(dcdFileName) #self.o.write_dcd_header(fp, nnatoms) fp = self.o.open_dcd_write(dcdFileName) self.o.write_dcd_step(fp, frame, step) dcdio.close_dcd_write(fp) # otest = sasmol.SasMol(0) otest.read_dcd(dcdFileName) result_coor = otest.coor() sum_result_coor = sum(sum(sum(result_coor))) expected_coor = numpy.array([[[ 73.944, -41.799, 41.652], [ 74.229, -42.563, 40.456], [ 75.667, -43.093, 40.463], [ 76.264, -43.279, 39.401], [ 73.210, -43.734, 40.336], [ 71.856, -43.168, 39.926], [ 73.677, -44.782, 39.354], [ 70.721, -44.177, 39.946], [ 76.231, -43.330, 41.647], [ 77.592, -43.852, 41.730], [ 78.617, -42.820, 42.184], [ 79.712, -43.169, 42.656], [ 77.671, -45.097, 42.648], [ 77.054, -44.816, 43.910], [ 76.970, -46.273, 42.000]]],floattype) sum_expected_coor = 1095.772 self.assert_list_almost_equal(expected_coor, result_coor, self.prcsn) self.assertAlmostEqual(sum_result_coor, sum_expected_coor, self.prcsn) os.remove(dcdFileName)
def generate(fin='rna.pdb', fout='rna.dcd', frames=1000): path = os.path.dirname(os.path.realpath(__file__)) fin = os.path.join(path, '../', 'data', 'pdb_common', fin) if not os.path.exists(fin): raise Exception, fin + ' does not exist while generating huge rna dcd files' return #fout = os.path.join(path,'../','data','dcd_common',fout) fout = os.path.join('/tmp/', fout) if os.path.exists(fout): return o = s.SasMol(0) o.read_pdb(fin) outfile = dcdio.open_dcd_write(fout) nset = frames natoms = o._coor[0, :, 0].shape[0] istart = 0 nsavc = 1 delta = 1.0 o.write_dcd_header(outfile, frames) tx = o.coor()[0, :, 0].astype(np.float32) ty = o.coor()[0, :, 1].astype(np.float32) tz = o.coor()[0, :, 2].astype(np.float32) for i in range(frames): dcdio.write_dcdstep(outfile, tx, ty, tz, i + 1) o.close_dcd_write(outfile)
def test_rna(self): ''' test a dcd with 1 frame based on a rna molecule ''' # pdbFile = pdbDataPath + 'rna.pdb' dcdFile = moduleDataPath + 'test-results/rna-writedcdframes.dcd' start = 0 end = 1 self.o.read_pdb(pdbFile) self.o.write_dcd_frames(dcdFile, start, end) o1 = sasmol.SasMol(0) o1.read_dcd(dcdFile) result_coor = o1.coor() sum_result_coor = sum(sum(sum(result_coor))) print '\nresult_coor \n', result_coor, '\nsum of result_coor\n', sum_result_coor os.remove(dcdFile) # self.assertEqual(len(result_coor), 1) self.assertEqual(len(result_coor[0]), 10632) expected_sample_coor = numpy.array([-35.960, 48.536, 72.994], floattype) sum_expected_coor = 59505.827 self.assert_list_almost_equal(expected_sample_coor, result_coor[0][10631], self.prcsn) self.assertAlmostEqual(sum_result_coor, sum_expected_coor, self.prcsn)
def test_1KP8(self): ''' test a dcd based on a large pdb complex (groel) ''' # pdbFileName = DataPath+'1KP8.pdb' dcdFileName = moduleDataPath+'test-results/1KP8-writedcd_step-test.dcd' # nnatoms = 1 frame = 0 step = 1 self.o.read_pdb(pdbFileName) #fp=dcdio.open_dcd_write(dcdFileName) #self.o.write_dcd_header(fp, nnatoms) fp = self.o.open_dcd_write(dcdFileName) self.o.write_dcd_step(fp, frame, step) dcdio.close_dcd_write(fp) # otest = sasmol.SasMol(0) otest.read_dcd(dcdFileName) result_coor = otest.coor() sum_result_coor = sum(sum(sum(result_coor))) print '\nresult_coor \n',result_coor self.assertEqual(len(result_coor[0]),57085) expected_sample_coor = numpy.array([104.484, 26.915, 12.538],floattype) sum_expected_coor = 6269170.260 self.assert_list_almost_equal(expected_sample_coor,result_coor[0][100], self.prcsn) self.assertAlmostEqual(sum_result_coor, sum_expected_coor, self.prcsn) os.remove(dcdFileName)
def test_1ATM_frame2(self): ''' test a dcd with 2 frames based on a 1-atom pdb write the 2nd frame ''' # pdbFileName = DataPath+'1ATM-1to2.pdb' dcdFileName = moduleDataPath+'test-results/1ATM-1to2-writedcd_step-test.dcd' # nnatoms = 1 frame = 1 step = 1 self.o.read_pdb(pdbFileName) #fp=dcdio.open_dcd_write(dcdFileName) #self.o.write_dcd_header(fp, nnatoms) fp = self.o.open_dcd_write(dcdFileName) self.o.write_dcd_step(fp, frame, step) dcdio.close_dcd_write(fp) # otest = sasmol.SasMol(0) otest.read_dcd(dcdFileName) result_coor = otest.coor() sum_result_coor = sum(sum(sum(result_coor))) expected_coor = numpy.array([[[73.944, 38.799, 41.652]]],floattype) sum_expected_coor = 154.395 self.assert_list_almost_equal(expected_coor, result_coor, self.prcsn) self.assertAlmostEqual(sum_result_coor, sum_expected_coor, self.prcsn) os.remove(dcdFileName)
def test_rna_frame1to10(self): ''' test a dcd with 10 frames based on a rna molecule ''' # pdbFile = pdbDataPath + 'rna-1to10.pdb' dcdFile = moduleDataPath + 'test-results/rna-1to10-writedcdframes.dcd' start = 0 end = 10 self.o.read_pdb(pdbFile) self.o.write_dcd_frames(dcdFile, start, end) o1 = sasmol.SasMol(0) o1.read_dcd(dcdFile) result_coor = o1.coor() sum_result_coor = sum(sum(sum(result_coor))) print '\nresult_coor \n', result_coor, '\nsum of result_coor\n', sum_result_coor os.remove(dcdFile) # self.assertEqual(len(result_coor), 10) self.assertEqual(len(result_coor[9]), 10632) expected_sample_coor = numpy.array([-6.392, 14.348, 20.914], floattype) sum_expected_coor = -430804.378 self.assert_list_almost_equal(expected_sample_coor, result_coor[9][10631], self.prcsn) self.assertAlmostEqual(sum_result_coor, sum_expected_coor, self.prcsn)
def test_1ATM_3(self): ''' test a dcd with 2 frames based on a 1-atom pdb and write all frames ''' # pdbFile = pdbDataPath + '1ATM-1to2.pdb' dcdFile = moduleDataPath + 'test-results/1ATM-1to2-writedcdframes.dcd' start = 0 end = 2 self.o.read_pdb(pdbFile) self.o.write_dcd_frames(dcdFile, start, end) o1 = sasmol.SasMol(0) o1.read_dcd(dcdFile) result_coor = o1.coor() sum_result_coor = sum(sum(sum(result_coor))) print '\nresult_coor \n', result_coor, '\nsum of result_coor\n', sum_result_coor os.remove(dcdFile) # expected_coor = numpy.array( [[[76.944, 41.799, 41.652]], [[73.944, 38.799, 41.652]]], floattype) sum_expected_coor = 314.790 print '\nexpected_coor \n', expected_coor # self.assert_list_almost_equal(expected_coor, result_coor, self.prcsn) self.assertAlmostEqual(sum_expected_coor, sum_result_coor, self.prcsn)
def test_2AAD(self): ''' test a dcd with 3 frames based on a 2-aa pdb ''' # pdbFile = pdbDataPath + '2AAD-1to3.pdb' dcdFile = moduleDataPath + 'test-results/2AAD-1to3-writedcdframes.dcd' start = 0 end = 3 self.o.read_pdb(pdbFile) self.o.write_dcd_frames(dcdFile, start, end) o1 = sasmol.SasMol(0) o1.read_dcd(dcdFile) result_coor = o1.coor() sum_result_coor = sum(sum(sum(result_coor))) print '\nresult_coor \n', result_coor, '\nsum of result_coor\n', sum_result_coor os.remove(dcdFile) # expected_coor = numpy.array([[[ 73.944, 41.799, 41.652], [ 74.229, 42.563, 40.456], [ 75.667, 43.093, 40.463], [ 76.264, 43.279, 39.401], [ 73.210, 43.734, 40.336], [ 71.856, 43.168, 39.926], [ 73.677, 44.782, 39.354], [ 70.721, 44.177, 39.946], [ 76.231, 43.330, 41.647], [ 77.592, 43.852, 41.730], [ 78.617, 42.820, 42.184], [ 79.712, 43.169, 42.656], [ 77.671, 45.097, 42.648], [ 77.054, 44.816, 43.910], [ 76.970, 46.273, 42.000]],\ [[ -73.944, 41.799, 41.652], [ -74.229, 42.563, 40.456], [ -75.667, 43.093, 40.463], [ -76.264, 43.279, 39.401], [ -73.210, 43.734, 40.336], [ -71.856, 43.168, 39.926], [ -73.677, 44.782, 39.354], [ -70.721, 44.177, 39.946], [ -76.231, 43.330, 41.647], [ -77.592, 43.852, 41.730], [ -78.617, 42.820, 42.184], [ -79.712, 43.169, 42.656], [ -77.671, 45.097, 42.648], [ -77.054, 44.816, 43.910], [ -76.970, 46.273, 42.000]],\ [[ 73.944, -41.799, 41.652], [ 74.229, -42.563, 40.456], [ 75.667, -43.093, 40.463], [ 76.264, -43.279, 39.401], [ 73.210, -43.734, 40.336], [ 71.856, -43.168, 39.926], [ 73.677, -44.782, 39.354], [ 70.721, -44.177, 39.946], [ 76.231, -43.330, 41.647], [ 77.592, -43.852, 41.730], [ 78.617, -42.820, 42.184], [ 79.712, -43.169, 42.656], [ 77.671, -45.097, 42.648], [ 77.054, -44.816, 43.910], [ 76.970, -46.273, 42.000]]],floattype) sum_expected_coor = 3644.294 print '\nexpected_coor \n', expected_coor # self.assert_list_almost_equal(expected_coor, result_coor, self.prcsn) self.assertAlmostEqual(sum_expected_coor, sum_result_coor, self.prcsn)
def test_1KP8(self): ''' test a dcd from a protein complex of greol ''' # pdbFile = pdbDataPath + '1KP8.pdb' dcdFile = moduleDataPath + 'test-results/1KP8-writedcdframes.dcd' start = 0 end = 1 self.o.read_pdb(pdbFile) self.o.write_dcd_frames(dcdFile, start, end) o1 = sasmol.SasMol(0) o1.read_dcd(dcdFile) result_coor = o1.coor() sum_result_coor = sum(sum(sum(result_coor))) print '\nresult_coor \n', result_coor, '\nsum of result_coor\n', sum_result_coor os.remove(dcdFile) # self.assertEqual(len(result_coor[0]), 57085) expected_sample_coor = numpy.array([104.484, 26.915, 12.538], floattype) sum_expected_coor = 6269170.260 self.assert_list_almost_equal(expected_sample_coor, result_coor[0][100], self.prcsn) self.assertAlmostEqual(sum_result_coor, sum_expected_coor, self.prcsn)
def test_pass(self): ''' test corr bypass since there is nothing here ''' # id = 3 o = sasmol.SasMol(id) o.molcharge()
def test_find_u_rotate_pdb(self): m1 = sasmol.SasMol(0) m2 = sasmol.SasMol(1) m1.read_pdb(PdbPath + "1CRN.pdb") m2.read_pdb(modulePdbPath + "1CRN-rot.pdb") coor_sub_m1 = m1.coor()[0] coor_sub_m2 = m2.coor()[0] u = sasmath.find_u(coor_sub_m1, coor_sub_m2) result = numpy.array( (numpy.matrix(u) * (numpy.matrix(coor_sub_m2).T)).T, numpy.float) #print numpy.dot(result.reshape(1,-1)[0],coor_sub_m1.reshape(1,-1)[0])/numpy.sqrt(numpy.dot(coor_sub_m1.reshape(1,-1)[0],coor_sub_m1.reshape(1,-1)[0])*numpy.dot(result.reshape(1,-1)[0],result.reshape(1,-1)[0])) #m3 = sasmol.SasMol(2) #m3.read_pdb('1CRN.pdb') #m3._coor[0,:]=result #m3.writepdb('1CRN-result.pdb',0,'w') self.assertEqual(len(result), len(coor_sub_m1)) for i in range(len(coor_sub_m1)): self.assert_list_almost_equal(list(result[i]), coor_sub_m1[i])
def setUp(self): self.centertmp = sasop.Move.center self.m = Mocker() sasop.Move.center = self.m.mock() sasop.Move.center(ARGS) self.m.result(None) self.m.count(0, None) self.m.replay() self.o = sasmol.SasMol(0)
def setUp(self): self.m = Mocker() self.back_masscheck = sasop.Move.masscheck sasop.Move.masscheck = self.m.mock() sasop.Move.masscheck(ARGS) self.m.result(None) self.m.count(0, None) self.m.replay() self.o = sasmol.SasMol(0)
def split_dcd(pdb_full_name, dcd_full_name, n_cpus, starting_dir): mol = sasmol.SasMol(0) mol.read_pdb(pdb_full_name) dcd_file = mol.open_dcd_read(dcd_full_name) total_frames = dcd_file[2] n_atoms = dcd_file[1] _, copy_mask = mol.get_subset_mask('all') n_frames_sub = np.array([total_frames / n_cpus] * n_cpus, dtype=int) n_frames_sub[:total_frames % n_cpus] += 1 last_frame = 0 sub_dirs = [] sub_dcd_names = [] first_last = [] for cpu in xrange(1, n_cpus + 1): sub_dir = op.join(starting_dir, 'sub%s' % str(cpu).zfill(2)) sub_dirs.append(sub_dir) mkdir_p(sub_dir) sub_mol = sasmol.SasMol(0) mol.copy_molecule_using_mask(sub_mol, copy_mask, 0) with cd(sub_dir): dcd_out_name = 'sub%s.dcd' % str(cpu).zfill(2) sub_dcd_names.append(dcd_out_name) first = last_frame last = last_frame + n_frames_sub[cpu - 1] dcd_out_file = sub_mol.open_dcd_write(dcd_out_name) for (i, frame) in enumerate(xrange(first, last)): sub_mol.read_dcd_step(dcd_file, frame) sub_mol.write_dcd_step(dcd_out_file, 0, i + 1) sub_mol.close_dcd_write(dcd_out_file) first_last.append([first, last]) last_frame += n_frames_sub[cpu - 1] return sub_dirs, sub_dcd_names, first_last
def test_id(self): ''' test initializer with id ''' # id = 3 o = sasmol.SasMol(id) self.assertEqual(o.id(), id) self.assertEqual(o.totalmass(), 0.0) self.assertEqual(o.natoms(), 0) self.assertEqual(o.mass(), None) self.assertEqual(o.coor(), None) self.assertEqual(o.com(), None) self.assertEqual(o.name(), 'Mol_None')
def get_dna_bp_and_axes(bp_mask, dna_ids, dna_mol, bp_mol=None, dna_id_type='segname'): if not bp_mol: bp_mol = sasmol.SasMol(0) error = dna_mol.copy_molecule_using_mask(bp_mol, bp_mask, 0) else: error, bp_coor = dna_mol.get_coor_using_mask(0, bp_mask) bp_mol.setCoor(bp_coor) bp_origin, bp_axes = get_dna_bp_reference_frame(dna_ids, bp_mol, dna_id_type) return bp_origin, bp_axes, bp_mol
def calculate_pr(pdbfile, dcdfile, input_nbins, bin_width): m = sasmol.SasMol(0) m.read_pdb(pdbfile) nbins = get_number_of_bins_from_structure(m, input_nbins) print 'nbins = ', nbins m.read_dcd(dcdfile) nf = m.number_of_frames() print 'nf = ', nf coor = m.coor() print 'coor[0][0] = ', coor[0][0] print 'coor[0][-1] = ', coor[0][-1] natoms = m.natoms() print 'natoms = ', natoms if flag: npairs = (natoms * (natoms - 1)) / 2 all_distances = numpy.zeros(npairs, numpy.float32) for i in xrange(nf): distances = prc.prc(coor[i]) all_distances += numpy.array(distances) if i == 0: print 'one_distance[0] = ', distances[0] print '.', print 'all_distances[0] = ', all_distances[0] / nf print 'calling pr_parallel' print 'python: coor[0][0][0] = ', coor[0][0][0] dist = pr_parallel.pr_parallel(coor, nf, natoms, nbins, bin_width) print '\nback in python\n\n' outfile = open('dist.txt', 'w') for val in dist: outfile.write('%f\n' % val) outfile.close()
def read_pdb_prep_pair(prep_filename, pdb_filename): """ Load structure, topology and naming information from PDB and atomic charges from antechamber ac file. Args: prep_filename (str): Path to the library (prep) file pdb_filename (str): Path to the PDB containing atomic coordinates and names Returns: amber_utils.AmberPrep: Information derived from prep file sasmol.SasMol: Information read from PDB file """ prep = AmberPrep(prep_filename) structure = sasmol.SasMol(0) structure.read_pdb(pdb_filename) structure.setFilename(pdb_filename) if len(structure.resnames()) != 1: raise Exception("More than one residue in PDB: {0:s}".format(pdb_filename)) # Sometimes building ligands files end up with inconsistent atom name # capitilization - we will upper case everything upper_names = [] structure_names = structure.name() for idx in range(structure.natoms()): upper_names.append(structure_names[idx].upper()) structure.setName(upper_names) invalid = check_prep_structure_consistency(prep, structure) if invalid: raise Exception(invalid) return prep, structure
def main(pdb_fname, dcd_fname='', in_dir='', out_dir='', restart=False): ''' calculate the pair-distance distribution ''' full_pdb_fname = os.path.join(in_dir, pdb_fname) assert os.path.exists(full_pdb_fname), 'No such file: {}'.format( full_pdb_fname) mol = sasmol.SasMol(0) mol.read_pdb(full_pdb_fname) if dcd_fname: full_dcd_fname = os.path.join(in_dir, dcd_fname) assert os.path.exists(full_dcd_fname), 'No such file: {}'.format( full_dcd_fname) dcd_file = mol.open_dcd_read(os.path.join(in_dir, full_dcd_fname)) n_frames = dcd_file[2] out_prefix = dcd_fname[:-4] else: n_frame = 1 out_prefix = pdb_fname[:-4] if out_dir: mkdir_p(out_dir) out_prefix = os.path.join(out_dir, out_prefix) tic = time.time() for i in xrange(n_frames): mol.read_dcd_step(dcd_file, i) pr = calc_pr_python(mol.coor()[0]) # output the result out_fname = '{}_{:05d}.pr'.format(out_prefix, i + 1) np.savetxt(out_fname, pr, fmt='%d', delimiter=',') toc = time.time() - tic logging.info('calculated P(r) for {} structures in {} s'.format( n_frames, toc)) logging.info('{} s for each structure'.format(toc / n_frames)) mol.close_dcd_read(dcd_file[0])
def test_1CRN(self): ''' test a dcd from a small protein of crambin ''' # pdbFile = pdbDataPath+'1CRN.pdb' dcdFile = moduleDataPath+'test-results/1CRN-writedcd.dcd' self.o.read_pdb(pdbFile) self.o.write_dcd(dcdFile) o1 = sasmol.SasMol(0) o1.read_dcd(dcdFile) result_coor = o1.coor() sum_result_coor = sum(sum(sum(result_coor))) print '\nresult_coor \n',result_coor,'\nsum of result_coor\n',sum_result_coor os.remove(dcdFile) # self.assertEqual(len(result_coor[0]),327) expected_sample_coor = numpy.array([9.555, 2.856, 3.730],floattype) sum_expected_coor = 8509.587 self.assert_list_almost_equal(expected_sample_coor,result_coor[0][100], self.prcsn) self.assertAlmostEqual(sum_result_coor, sum_expected_coor, self.prcsn)
def split_dcd_to_pdbs(pdb_full_fname, dcd_full_fname, starting_dir): mol = sasmol.SasMol(0) mol.read_pdb(pdb_full_fname) dcd_file = mol.open_dcd_read(dcd_full_fname) total_frames = dcd_file[2] n_atoms = dcd_file[1] sub_dirs = [] pdb_out_fname = 'temp_0.pdb' for i in xrange(total_frames): sub_dir = op.join(starting_dir, 'sub{}'.format(str(i + 1).zfill(5))) sub_dirs.append(sub_dir) mkdir_p(sub_dir) with cd(sub_dir): mol.read_dcd_step(dcd_file, 0) mol.write_pdb(pdb_out_fname, 0, 'w') return sub_dirs
import sasmol.sasmol as sasmol # setup the samol object mol = sasmol.SasMol(0) out_filename = "dna_sl.txt" f = open(out_filename, 'w') atomic = sasmol.sasproperties.Atomic() dsl = atomic.dna_sl() for key, item in dsl.items(): print key, item f.write('%3s' ' ' '%s' '\n' % (key, item)) f.close()
def setUp(self): self.o = sasmol.SasMol(0)
def setUp(self): self.o=sasmol.SasMol(0) self.standard_atomic_weight = self.o.amu()
def setUp(self): self.o = sasmol.SasMol(0) self.o_result = sasmol.SasMol(1) self.o_expected = sasmol.SasMol(2)
def setUp(self): self.m = Mocker() self.o=sasmol.SasMol(0)
def setUp(self): self.o1 = sasmol.SasMol(0) self.o2 = sasmol.SasMol(1) self.o3 = sasmol.SasMol(2)
def setUp(self): self.o = sasmol.SasMol(0) self.prcsn = 3