def dcd_fit(filename_dcd, filename_dcd_out, natom_total, serials, filename_rmsd): f_out = open(filename_rmsd, 'w') # Coord1 pdb = PdbFile('16SCD.cg.pdb') pdb.open_to_read() ref_chains = pdb.read_all() pdb.close() #num_atom = 0 #for chain in ref_chains : # for residue in chain.residues : # num_atom += len(residue.atoms) ref = zeros((natom_total, 3), dtype=float64, order='C') i = 0 for chain in ref_chains: for residue in chain.residues: for atom in residue.atoms: (ref[i][0], ref[i][1], ref[i][2]) = atom.xyz.get_as_tuple() i += 1 mask = [] for i in range(natom_total): # the serial ID starts from 1, thus i+1 is the serial ID if i + 1 in serials: mask.append(1) else: mask.append(0) dcd = DcdFile(filename_dcd) dcd.open_to_read() dcd.read_header() out_dcd = DcdFile(filename_dcd_out) out_dcd.open_to_write() out_dcd.set_header(dcd.get_header()) out_dcd.write_header() #dcd.show_header() k = 0 while dcd.has_more_data(): k += 1 coords_dcd = dcd.read_onestep_np() rmsd = superimpose(ref.T, coords_dcd.T, mask) f_out.write('{:8d} {:6.2f}\n'.format(k, rmsd)) out_dcd.write_onestep(coords_dcd) dcd.close() out_dcd.close()
chains_cg.append(c_cg) return chains_cg if __name__ == '__main__': from cafysis.file_io.pdb import PdbFile if len(sys.argv) not in (3, 4): print( 'Usage: SCRIPT [input aa PDB] [flag to start with P (Y/n)] [output cg PDB]' ) sys.exit(2) flg_start_P = False if len(sys.argv) == 4: if sys.argv[2] == 'Y': flg_start_P = True aa = PdbFile(sys.argv[1], 'r') chains = aa.read_all() aa.close() chains_cg = aa2cg(chains, flg_start_P) cg = PdbFile(sys.argv[-1], 'w') cg.write_all(chains_cg) cg.close()
#!/usr/bin/env python #from Superimpose_weight import superimpose from Superimpose_mask import superimpose from cafysis.file_io.pdb import PdbFile from cafysis.util_pdb import chains_to_ndarray NATOM = 1037 chains_ref = PdbFile('../16SCD.cg.pdb', 'r').read_all_and_close() chains_que = PdbFile('./cg.pdb', 'r').read_all_and_close() #weight = [1.0]*NATOM weight = [0.0] * NATOM for i in range(14, 43): weight[i] = 1.0 d_ref = chains_to_ndarray(chains_ref) d_que = chains_to_ndarray(chains_que) rmsd = superimpose(d_ref.T, d_que.T, weight) print(rmsd)
serials.append(3*(res-1)+1) # S elif 848 <= i <= 913: res = i - 567 serials.append(3*(res-1)) # P serials.append(3*(res-1)+1) # S else: print("Error: resid {:d} should not be there".format(i)) sys.exit(2) for cM in cMs: filename_dcd = 'cM{:s}.fit{:s}.dcd'.format(cM,name) filename_dx = 'cM{:s}.fit{:s}.dx'.format(cM,name) nMg = 0 c = PdbFile('../make_ninfo/16SCD.cM{:s}.cg.ion.pdb'.format(cM),'r').read_all_and_close()[0] for r in c.residues: if r.atoms[0].name.strip() == 'MG': nMg += 1 dcd = DcdFile(filename_dcd) dcd.open_to_read() dcd.read_header() data = [] mm = minmax() ''' Create target volume ''' mm_target = minmax() c = PdbFile('./16SCD.cg.pdb','r').read_all_and_close()[0]
ID_DOM_INI = int(sys.argv[3]) - 1 # 重心を求める際に必要 ID_DOM_END = int(sys.argv[4]) - 1 ID_DOM_INI_FIT = int(sys.argv[5]) - 1 # 重心を求める際に必要 ID_DOM_END_FIT = int(sys.argv[6]) - 1 BOXSIZE = float(sys.argv[7]) BOXMAX = 0.5 * BOXSIZE BOXMIN = -0.5 * BOXSIZE ### Files dcd = DcdFile(sys.argv[1]) dcd.open_to_read() pdb = PdbFile(sys.argv[2]) pdb.open_to_read() dcd_out = DcdFile(sys.argv[-1]) dcd_out.open_to_write() ### Read the reference pdb ref_chains = pdb.read_all() num_atom = 0 for chain in ref_chains : num_atom += chain.num_atom() ref = zeros((3, num_atom), dtype=float64, order='F') i = 0
def apply_rot(chains, rot): for c in chains: for r in c.residues: for a in r.atoms: coords = a.xyz.get_as_list() coords = dot(rot, coords + [ 1.0, ])[0:3] a.xyz.x = coords[0] a.xyz.y = coords[1] a.xyz.z = coords[2] if __name__ == '__main__': import sys if len(sys.argv) != 3: print("Usage: SCRIPT [input reference PDB] [input query PDB]") sys.exit(2) chains_ref = PdbFile(sys.argv[1], 'r').read_all_and_close() chains_que = PdbFile(sys.argv[2], 'r').read_all_and_close() rmsd, rot = fit(chains_ref, chains_que) print(rmsd) print(rot)
# print(' % SCRIPT [input DCD] [beginning (0)] [end] [stride] [reference PDB] [output movie]') # sys.exit(2) #if args.flg_fit: # from Superimpose import superimpose if args.frame_begin < 0: print('Error: Beginning frame must be > 0') sys.exit(2) if args.frame_stride <= 0: print('Error: Frame stride must be > 0') sys.exit(2) # Read the reference PDB pdb = PdbFile(args.pdb) pdb.open_to_read() chains = pdb.read_all() pdb.close() # Output PDB movie = PdbFile(args.out) movie.open_to_write() # Open DCD and read the header dcd = DcdFile(args.dcd) dcd.open_to_read() dcd.read_header() num_dcd_frames = dcd.count_frame()
nt = nt12 - 11 mp_domA.append(3 * (nt - 1)) # Use phosphate mp_domA_0 = 3 * (110 - 11) mp_domA_1 = 3 * (72 - 11) mp_domB = [] for nt12 in list(range(42, 47 + 1)) + list(range(174, 178 + 1)) + list( range(130, 166 + 1)): nt = nt12 - 11 mp_domB.append(3 * (nt - 1)) # Use phosphate mp_domB_0 = 3 * (155 - 11) mp_domB_1 = 3 * (130 - 11) pdb = PdbFile(pdbfilepath) pdb.open_to_read() chains = pdb.read_all() c = chains[0] pdb.close() ''' Domain A ''' xyzs = [] for imp in mp_domA: xyzs.append(c.get_atom(imp - 1).xyz.get_as_list()) xyzs = np.array(xyzs) com = np.sum(xyzs, axis=0) / float(xyzs.shape[0]) #print com xyzs = xyzs - com
if len(sys.argv) < 5: print(('Usage: % SCRIPT [PDB filename] [DCD filename]' +'[serial ID begin] [serial ID end]')) sys.exit(2) filename_pdb = sys.argv[1] filename_dcd = sys.argv[2] id_begin = [] id_end = [] for iarg in range(3, len(sys.argv)-1, 2) : id_begin.append(int(sys.argv[iarg])) id_end.append(int(sys.argv[iarg+1])) # Coord1 pdb = PdbFile(filename_pdb) pdb.open_to_read() ref_chains = pdb.read_all() pdb.close() num_atom = 0 for chain in ref_chains : for residue in chain.residues : num_atom += len(residue.atoms) ref = zeros((3, num_atom), dtype=float64, order='F') i = 0 for chain in ref_chains : for residue in chain.residues: for atom in residue.atoms :
from cafysis.file_io.dcd import DcdFile from cafysis.file_io.pdb import PdbFile if len(sys.argv) != 5: print( 'Usage: % SCRIPT [PDB filename] [DCD filename] [out PDB filename] [out bfactor file]' ) sys.exit(2) filename_pdb = sys.argv[1] filename_dcd = sys.argv[2] filename_outpdb = sys.argv[3] filename_out = sys.argv[4] # Coord1 fron input PDB pdb = PdbFile(filename_pdb) pdb.open_to_read() chains = pdb.read_all() pdb.close() num_atom = 0 for chain in chains: num_atom += chain.num_atom() #i = 0 #for chain in ref_chains : # for residue in chain.residues: # for atom in residue.atoms : # (ref[0][i], ref[1][i], ref[2][i]) = atom.xyz.get_as_tuple() # i += 1 #
print('Usage: SCRIPT [PDB]') print('') print('Returns: %5i %6.3f %6.3f %6.3f % (N, Rg, D, S)') print(' N = number of particles (atoms)') print(' Rg = radius of gyration') print(' D = Sphericity (0 <= D <= 1)') print(' D = 0 --> perfect sphere') print(' D > 0 --> anisotropic') print(' S = Spheroidal shape (-1/4 <= S <= 2)') print(' S < 0 --> oblate') print(' S > 0 --> prolate') sys.exit(2) # Read PDB coordinates pdb = PdbFile(sys.argv[1]) pdb.open_to_read() chains = pdb.read_all() xyzs = [] for c in chains: for r in c.residues: for a in r.atoms: xyzs.append(a.xyz.get_as_list()) ''' xyzs for N-atom PDB [ [ 1x, 1y, 1z], [ 2x, 2y, 2z], [ 3x, 3y, 3z], [ 4x, . .
(ignore Hydrogen atom) ''' import sys from cafysis.file_io.pdb import PdbFile from cafysis.elements.coord import Coord from cafysis.elements.pdb import Chain, Residue, Atom element2mass = {'P': 30.973761, 'O': 15.9994, 'C': 12.0107, 'N': 14.0067} if __name__ == '__main__': if len(sys.argv) != 3: print('Usage: %SCRIPT [input PDB file] [output PDB]') sys.exit(2) pdb_in = PdbFile(sys.argv[1]) pdb_in.open_to_read() chains = pdb_in.read_all() pdb_in.close() pdb_out = PdbFile(sys.argv[2]) pdb_out.open_to_write() pdb_out.write_remark('Generated using cafysis/pdb_rna_nucleotide_com.py') import time import datetime pdb_out.write_remark('At %s' % (datetime.datetime.fromtimestamp( time.time()).strftime('%Y%m%d %H:%M%S'), )) chains_com = [] from . import elements
#!/usr/bin/env python ''' @author: Naoto Hori ''' import sys from cafysis.file_io.pdb import PdbFile if len(sys.argv) != 5: print('\n Usage: SCRIPT [list file] [input PDB1] [input PDB2] [output]\n') sys.exit(2) f_list = open(sys.argv[1], 'r') f_pdb = PdbFile(sys.argv[2]) f_pdb.open_to_read() chains1 = f_pdb.read_all() f_pdb.close f_pdb = PdbFile(sys.argv[3]) f_pdb.open_to_read() chains2 = f_pdb.read_all() f_pdb.close f_out = open(sys.argv[4], 'w') if len(chains1) != len(chains2): print(("Error: len(chains1)(=%i) != len(chains2)(=%i)" % (len(chains1), len(chains2)))) sys.exit(2) # !!! current version is for only single chain !!! if len(chains1) != 1 or len(chains2) != 1:
import sys import math from cafysis.file_io.pdb import PdbFile from cafysis.elements.coord import Coord if len(sys.argv) not in (2, 3): print('Usage: SCRIPT [PDB] (score cutoff = 0.5)') print(' or : SCRIPT [PDB] [score cutoff]') sys.exit(2) SCORE_CUT = 0.5 if len(sys.argv) > 2: SCORE_CUT = float(sys.argv[2]) pf = PdbFile(sys.argv[1]) pf.open_to_read() chains = pf.read_all() pf.close() coms = [] normals = [] locations = [] ## Suppose all residues have a base nres = 0 for ic, c in enumerate(chains): for ir, r in enumerate(c.residues): nres += 1
## If residues in the original PDB are # DT5, DA, DC ...., then SEQ_POSITION = 1 # T5, A, C ...., then #SEQ_POSITION = 0 ATOMS_P = ('P', 'OP1', 'OP2', "O5'") # "O3'" from the previous nucleotide ATOMS_P_AMBER = ("P", "O1P", "O2P", "O5*") ATOMS_S = ("C5'", "C4'", "C3'", "C2'", "C1'", "O4'") ATOMS_S_AMBER = ("C5*", "C4*", "C3*", "C2*", "C1*", "O4*") ATOMS_A = ("N9", "C8", "N7", "C5", "C6", "N6", "N1", "C2", "N3", "C4") ATOMS_G = ("N9", "C8", "N7", "C5", "C6", "O6", "N1", "C2", "N2", "N3", "C4") ATOMS_C = ("N1", "C2", "O2", "N3", "C4", "N4", "C5", "C6") ATOMS_T = ("N1", "C2", "O2", "N3", "C4", "O4", "C5", "C7", "C6") aa = PdbFile(sys.argv[1]) aa.open_to_read() chains = aa.read_all() cg_chains = [] atom_id = 0 for c in chains: c_cg = Chain() xyz_O3 = None res_id = 0 for ir, r in enumerate(c.residues): xyz_P = Coord() nP = 0
#!/usr/bin/env python import sys import math from cafysis.file_io.pdb import PdbFile from cafysis.file_io.ninfo import NinfoFile from cafysis.para.rnaAform import ARNA from cafysis.para.rnaDT13 import DT13 from cafysis.elements.ninfo import NinfoSet, BondLength, BondAngle, BaseStackDT, HBondDT if len(sys.argv) != 4: print('Usage: SCRIPT [cg pdb] [hb list file] [output ninfo]') sys.exit(2) f_in = PdbFile(sys.argv[1]) f_in.open_to_read() chains = f_in.read_all() f_in.close() if len(chains) > 1: print('%i chains' % len(chains)) n_nt = [] for ic, c in enumerate(chains): n_nt.append(c.num_res()) print('#nt (chain %i): ', ic + 1, n_nt) seq = [] for ic, c in enumerate(chains): s = []
assembly_units.append(mtx_id) if row == 3: row_pre = 0 else: row_pre = row #TEST #for mtx_id in assembly_units: # print (mtx_id) # matrices[mtx_id].show() #sys.exit(1) filename_pdb = sys.argv[1] ''' Read inpout PDB ''' pdb = PdbFile(filename_pdb) pdb.open_to_read() chains = pdb.read_all() pdb.close() _, ext = os.path.splitext(filename_pdb) filename_base = os.path.basename(filename_pdb)[:-len(ext)] ''' Rotate and output each assembly unit ''' for mtx_id in assembly_units: newchains = copy.deepcopy(chains) for c in newchains: for r in c.residues: for a in r.atoms: #print ('###')
atoms_AU = 'N6 O4 N1 N3 TER' atoms_GC = 'N1 N3 N2 O2 O6 N4 TER' atoms_GU = 'N1 O2 O6 N3 TER' if len(sys.argv) != 4: print( "Usage: SCRIPT [input cg.pdb (for seq)] [input hb.native.dat] [output hbond.dat]" ) sys.exit(2) filepath_pdb = sys.argv[1] filepath_hb = sys.argv[2] filepath_out = sys.argv[3] pdb = PdbFile(filepath_pdb) pdb.open_to_read() chains = pdb.read_all() if len(chains) != 1: print("Error: len(chains) != 1, not supported") sys.exit(2) seq = '' for r in chains[0].residues: seq += r.atoms[0].res_name.strip()[-1] nseq = len(seq) print(seq) print('length = %i' % nseq)
''' Created on 2013/08/06 @author: Naoto Hori ''' import sys from cafysis.file_io.dcd import DcdFile from cafysis.file_io.ts import TsFile from cafysis.file_io.pdb import PdbFile if len(sys.argv) != 5: print('Usage: % SCRIPT [input DCD] [ts file] [reference PDB] [output movie]') sys.exit(2) # Read the reference PDB pdb = PdbFile(sys.argv[-2]) pdb.open_to_read() chains = pdb.read_all() pdb.close() # Output PDB pdb = PdbFile(sys.argv[-1]) pdb.open_to_write() # Open DCD and read the header dcd_filename = sys.argv[1] dcd = DcdFile(dcd_filename) dcd.open_to_read() dcd.read_header() # Open TS and read the header
''' RN20:107 Ste7のPDBについて、位置と配向を揃える ''' from cafysis.elements.coord import Coord from cafysis.mtx_coord_transform import mtx_crd_transform from cafysis.file_io.pdb import PdbFile import sys from math import hypot, atan2 if len(sys.argv) != 2: print('Usage: SCRIPT [file]') sys.exit(2) pdb = PdbFile(sys.argv[1]) pdb.open_to_read() chains = pdb.read_all() #DEBUG from math import sqrt #DEBUG Q = Coord(-2,-2*sqrt(3.0), - 4*sqrt(3.0)) # QにSte7のQ189:CAの座標を代入 Q = Coord() for atom in chains[1].residues[188].atoms: if atom.name.find("CA") != -1: #(Q.x,Q.y,Q.z) = atom.xyz.get_as_tuple() Q = atom.xyz N = Coord() for atom in chains[1].residues[200].atoms: if atom.name.find("CA") != -1: N = atom.xyz
SEP_B_B = 3 # residue (i) and residue (i+3) SEP_B_S = 2 # residue (i) and residue (i+2) SEP_S_S = 2 # residue (i) and residue (i+2) import sys from cafysis.file_io.pdb import PdbFile from cafysis.file_io.ninfo import NinfoFile from cafysis.elements.ninfo import NinfoSet, Fene, LJ from cafysis.para.BetancourtThirumalai import BTmatrix if len(sys.argv) != 3: print('Usage: SCRIPT [input PDB] [output ninfo]') sys.exit(2) p = PdbFile(sys.argv[1]) p.open_to_read() chains = p.read_all() ns = NinfoSet() a_BB_pre = None for ic, c in enumerate(chains): for r in c.residues: num_a = len(r.atoms) a_BB = None a_SC = None
import sys from cafysis.file_io.pdb import PdbFile if len(sys.argv) < 5: print( 'Usage: % SCRIPT [average file] [input pdb] [ev file] [,ev file ....] [output PC file]' ) sys.exit(2) data_ave = [] for line in open(sys.argv[1], 'r'): data_ave.append(float(line.strip())) print(("#Dimension: %s" % len(data_ave))) f_pdb = PdbFile(sys.argv[2]) f_pdb.open_to_read() f_out = open(sys.argv[-1], 'w') # Read eigen values num_ev = len(sys.argv) - 4 ev = [] for i in range(num_ev): f_ev = open(sys.argv[i + 3], 'r') ev_tmp = [] for line in f_ev: if line.find('#') != -1: continue ev_tmp.append(float(line.strip())) ev.append(ev_tmp) f_ev.close()
from cafysis.file_io.dcd import DcdFile from cafysis.file_io.pdb import PdbFile from Superimpose_mask import superimpose from numpy import zeros, asarray, float64 import sys id_begin = [] id_end = [] for iarg in range(4, len(sys.argv)-1, 2) : id_begin.append(int(sys.argv[iarg])) id_end.append(int(sys.argv[iarg+1])) NATOM_TOTAL = 5594 # Coord1 pdb = PdbFile('16SCD.cg.pdb') pdb.open_to_read() ref_chains = pdb.read_all() pdb.close() num_atom = 0 for chain in ref_chains : for residue in chain.residues : num_atom += len(residue.atoms) #ref = zeros((3, NATOM_TOTAL), dtype=float64, order='F') ref = zeros((NATOM_TOTAL, 3), dtype=float64, order='C') i = 0 for chain in ref_chains : for residue in chain.residues:
''' @author: Naoto Hori ''' import sys from cafysis.file_io.pdb import PdbFile if len(sys.argv) != 5: print('') print( ' Usage: SCRIPT [input PDB] [The residue number of the first a.a.] [output PDB] [log file]' ) print('') sys.exit(2) pdb_in = PdbFile(sys.argv[1]) pdb_in.open_to_read() chains = pdb_in.read_all() pdb_in.close() res_id = int(sys.argv[2]) f_log = open(sys.argv[4], 'w') f_log.write('#original -> new\n') for c in chains: print(sys.argv[1], '#residues', len(c.residues)) for r in c.residues: f_log.write('%i %s -> %i\n' % (r.atoms[0].res_seq, r.atoms[0].ins_code, res_id)) for a in r.atoms: a.res_seq = res_id a.ins_code = ' '
from cafysis.elements.ninfo import NinfoSet from cafysis.file_io.ninfo import NinfoFile from cafysis.file_io.pdb import PdbFile if len(sys.argv) != 4: print ("Usage: SCRIPT [ninfo file] [pdb file] [output file]") sys.exit(2) file_ninfo = NinfoFile(sys.argv[1]) file_ninfo.open_to_read() ns = NinfoSet() file_ninfo.read_all(ns) ns.update_info() file_ninfo.close() file_pdb = PdbFile(sys.argv[2]) file_pdb.open_to_read() chains = file_pdb.read_all() xyz = [] for c in chains: for i in range(c.num_atom()): xyz.append(c.get_atom(i).xyz) print(("## Confirmation: number of atoms = %i" % len(xyz))) f_out = open(sys.argv[-1],'w') f_out.write('#Contacts\n') for con in ns.contacts: conid = con.id
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' @author: Naoto Hori ''' import sys from cafysis.file_io.pdb import PdbFile if len(sys.argv) != 6: print( '\n Usage: SCRIPT [bfactor file] [PDB file] [scale] [Upper] [output PDB file]\n' ) sys.exit(2) f_bf_in = open(sys.argv[1], 'r') f_pdb = PdbFile(sys.argv[2]) f_pdb.open_to_read() chains = f_pdb.read_all() f_pdb.close() f_pdb_out = PdbFile(sys.argv[-1]) f_pdb_out.open_to_write() f_pdb_out._file.write('RECORD # SCRIPT: bfactor_write_to_pdb.py\n') f_pdb_out._file.write('RECORD # argv[1]: ' + sys.argv[1] + '\n') f_pdb_out._file.write('RECORD # argv[2]: ' + sys.argv[2] + '\n') f_pdb_out._file.write('RECORD # argv[3]: ' + sys.argv[3] + '\n') f_pdb_out._file.write('RECORD # argv[4]: ' + sys.argv[4] + '\n') f_pdb_out._file.write('RECORD # argv[5]: ' + sys.argv[5] + '\n') scale = float(sys.argv[3]) upper = float(sys.argv[4])
#!/usr/bin/env python from cafysis.elements.pdb import Chain, Residue from cafysis.file_io.pdb import PdbFile from cafysis.pdb_aa2cg import aa2cg from cafysis.bestfit_pdb_chains import fit, apply_rot # Reference structure chains_1j5e_cg = PdbFile('../16SCD.cg.pdb', 'r').read_all_and_close() ''' 4y4o-pdb-bundle1.pdb 4y4o-pdb-bundle2.pdb <=== A 562-913 = 16SCD 4y4o-pdb-bundle3.pdb 4y4o-pdb-bundle4.pdb <=== A 562-913 = 16SCD ''' DISTANCE_MG = 6.0 def check_distance(chain_ref, atom_query): for r in chain_ref.residues: for a in r.atoms: if atom_query.xyz.distance(a.xyz) <= DISTANCE_MG: return True return False for ibundle_16SCD, ibundles_Mg, modelname in ((2, (1, 2), '1a'), (4, (3, 4), '2a')): # Read 16SCD (Turn on HETATM to read Mg)