def makeCys(segID: int, N, CA, C, O, geo: CysGeo) -> Residue: """Creates a Cysteine residue""" ##R-Group CA_CB_length = geo.CA_CB_length C_CA_CB_angle = geo.C_CA_CB_angle N_C_CA_CB_diangle = geo.N_C_CA_CB_diangle CB_SG_length = geo.CB_SG_length CA_CB_SG_angle = geo.CA_CB_SG_angle N_CA_CB_SG_diangle = geo.N_CA_CB_SG_diangle carbon_b = calculateCoordinates(N, C, CA, CA_CB_length, C_CA_CB_angle, N_C_CA_CB_diangle) CB = Atom("CB", carbon_b, 0.0, 1.0, " ", " CB", 0, "C") sulfur_g = calculateCoordinates(N, CA, CB, CB_SG_length, CA_CB_SG_angle, N_CA_CB_SG_diangle) SG = Atom("SG", sulfur_g, 0.0, 1.0, " ", " SG", 0, "S") res = Residue((" ", segID, " "), "CYS", " ") res.add(N) res.add(CA) res.add(C) res.add(O) res.add(CB) res.add(SG) return res
def makeCys(segID, N, CA, C, O, geo): '''Creates a Cysteine residue''' ##R-Group CA_CB_length=geo.CA_CB_length C_CA_CB_angle=geo.C_CA_CB_angle N_C_CA_CB_diangle=geo.N_C_CA_CB_diangle CB_SG_length= geo.CB_SG_length CA_CB_SG_angle= geo.CA_CB_SG_angle N_CA_CB_SG_diangle= geo.N_CA_CB_SG_diangle carbon_b= calculateCoordinates(N, C, CA, CA_CB_length, C_CA_CB_angle, N_C_CA_CB_diangle) CB= Atom("CB", carbon_b, 0.0 , 1.0, " "," CB", 0,"C") sulfur_g= calculateCoordinates(N, CA, CB, CB_SG_length, CA_CB_SG_angle, N_CA_CB_SG_diangle) SG= Atom("SG", sulfur_g, 0.0, 1.0, " ", " SG", 0, "S") ##Create Residue Data Structure res= Residue((' ', segID, ' '), "CYS", ' ') res.add(N) res.add(CA) res.add(C) res.add(O) res.add(CB) res.add(SG) return res
def makeSer(segID: int, N, CA, C, O, geo: SerGeo) -> Residue: """Creates a Serine residue""" ##R-Group CA_CB_length = geo.CA_CB_length C_CA_CB_angle = geo.C_CA_CB_angle N_C_CA_CB_diangle = geo.N_C_CA_CB_diangle CB_OG_length = geo.CB_OG_length CA_CB_OG_angle = geo.CA_CB_OG_angle N_CA_CB_OG_diangle = geo.N_CA_CB_OG_diangle carbon_b = calculateCoordinates(N, C, CA, CA_CB_length, C_CA_CB_angle, N_C_CA_CB_diangle) CB = Atom("CB", carbon_b, 0.0, 1.0, " ", " CB", 0, "C") oxygen_g = calculateCoordinates(N, CA, CB, CB_OG_length, CA_CB_OG_angle, N_CA_CB_OG_diangle) OG = Atom("OG", oxygen_g, 0.0, 1.0, " ", " OG", 0, "O") ##Create Reside Data Structure res = Residue((" ", segID, " "), "SER", " ") res.add(N) res.add(CA) res.add(C) res.add(O) res.add(CB) res.add(OG) return res
def build_cacb_representation(self, old_struct, new_st, atom_names): """ builds new structure composed of atom_name atoms only for nucleic acids these are ["C4'", "P"], for proteins ["CA", "CB"] """ for atom in old_struct.struct.get_atoms(): new_chain = list(new_st.get_chains())[0] if atom.name in atom_names: resi = atom.get_parent() if new_chain.has_id(resi.id): pass else: new_resi = Residue(resi.id, resi.resname, " ") new_chain.add(new_resi) new_resi.add(atom) del self.fa_struct
def makeMet(segID: int, N, CA, C, O, geo: MetGeo) -> Residue: """Creates a Methionine residue""" ##R-Group CA_CB_length = geo.CA_CB_length C_CA_CB_angle = geo.C_CA_CB_angle N_C_CA_CB_diangle = geo.N_C_CA_CB_diangle CB_CG_length = geo.CB_CG_length CA_CB_CG_angle = geo.CA_CB_CG_angle N_CA_CB_CG_diangle = geo.N_CA_CB_CG_diangle CG_SD_length = geo.CG_SD_length CB_CG_SD_angle = geo.CB_CG_SD_angle CA_CB_CG_SD_diangle = geo.CA_CB_CG_SD_diangle SD_CE_length = geo.SD_CE_length CG_SD_CE_angle = geo.CG_SD_CE_angle CB_CG_SD_CE_diangle = geo.CB_CG_SD_CE_diangle carbon_b = calculateCoordinates(N, C, CA, CA_CB_length, C_CA_CB_angle, N_C_CA_CB_diangle) CB = Atom("CB", carbon_b, 0.0, 1.0, " ", " CB", 0, "C") carbon_g = calculateCoordinates(N, CA, CB, CB_CG_length, CA_CB_CG_angle, N_CA_CB_CG_diangle) CG = Atom("CG", carbon_g, 0.0, 1.0, " ", " CG", 0, "C") sulfur_d = calculateCoordinates(CA, CB, CG, CG_SD_length, CB_CG_SD_angle, CA_CB_CG_SD_diangle) SD = Atom("SD", sulfur_d, 0.0, 1.0, " ", " SD", 0, "S") carbon_e = calculateCoordinates(CB, CG, SD, SD_CE_length, CG_SD_CE_angle, CB_CG_SD_CE_diangle) CE = Atom("CE", carbon_e, 0.0, 1.0, " ", " CE", 0, "C") ##Create Residue Data Structure res = Residue((" ", segID, " "), "MET", " ") res.add(N) res.add(CA) res.add(C) res.add(O) res.add(CB) res.add(CG) res.add(SD) res.add(CE) return res
def makeAsn(segID, N, CA, C, O, geo): """Creates an Asparagine residue""" ##R-Group CA_CB_length = geo.CA_CB_length C_CA_CB_angle = geo.C_CA_CB_angle N_C_CA_CB_diangle = geo.N_C_CA_CB_diangle CB_CG_length = geo.CB_CG_length CA_CB_CG_angle = geo.CA_CB_CG_angle N_CA_CB_CG_diangle = geo.N_CA_CB_CG_diangle CG_OD1_length = geo.CG_OD1_length CB_CG_OD1_angle = geo.CB_CG_OD1_angle CA_CB_CG_OD1_diangle = geo.CA_CB_CG_OD1_diangle CG_ND2_length = geo.CG_ND2_length CB_CG_ND2_angle = geo.CB_CG_ND2_angle CA_CB_CG_ND2_diangle = geo.CA_CB_CG_ND2_diangle carbon_b = calculateCoordinates(N, C, CA, CA_CB_length, C_CA_CB_angle, N_C_CA_CB_diangle) CB = Atom("CB", carbon_b, 0.0, 1.0, " ", " CB", 0, "C") carbon_g = calculateCoordinates(N, CA, CB, CB_CG_length, CA_CB_CG_angle, N_CA_CB_CG_diangle) CG = Atom("CG", carbon_g, 0.0, 1.0, " ", " CG", 0, "C") oxygen_d1 = calculateCoordinates(CA, CB, CG, CG_OD1_length, CB_CG_OD1_angle, CA_CB_CG_OD1_diangle) OD1 = Atom("OD1", oxygen_d1, 0.0, 1.0, " ", " OD1", 0, "O") nitrogen_d2 = calculateCoordinates(CA, CB, CG, CG_ND2_length, CB_CG_ND2_angle, CA_CB_CG_ND2_diangle) ND2 = Atom("ND2", nitrogen_d2, 0.0, 1.0, " ", " ND2", 0, "N") res = Residue((" ", segID, " "), "ASN", " ") ##Create Residue Data Structure res.add(N) res.add(CA) res.add(C) res.add(O) res.add(CB) res.add(CG) res.add(OD1) res.add(ND2) return res
def makeLeu(segID: int, N, CA, C, O, geo: LeuGeo) -> Residue: """Creates a Leucine residue""" ##R-Group CA_CB_length = geo.CA_CB_length C_CA_CB_angle = geo.C_CA_CB_angle N_C_CA_CB_diangle = geo.N_C_CA_CB_diangle CB_CG_length = geo.CB_CG_length CA_CB_CG_angle = geo.CA_CB_CG_angle N_CA_CB_CG_diangle = geo.N_CA_CB_CG_diangle CG_CD1_length = geo.CG_CD1_length CB_CG_CD1_angle = geo.CB_CG_CD1_angle CA_CB_CG_CD1_diangle = geo.CA_CB_CG_CD1_diangle CG_CD2_length = geo.CG_CD2_length CB_CG_CD2_angle = geo.CB_CG_CD2_angle CA_CB_CG_CD2_diangle = geo.CA_CB_CG_CD2_diangle carbon_b = calculateCoordinates(N, C, CA, CA_CB_length, C_CA_CB_angle, N_C_CA_CB_diangle) CB = Atom("CB", carbon_b, 0.0, 1.0, " ", " CB", 0, "C") carbon_g1 = calculateCoordinates(N, CA, CB, CB_CG_length, CA_CB_CG_angle, N_CA_CB_CG_diangle) CG = Atom("CG", carbon_g1, 0.0, 1.0, " ", " CG", 0, "C") carbon_d1 = calculateCoordinates(CA, CB, CG, CG_CD1_length, CB_CG_CD1_angle, CA_CB_CG_CD1_diangle) CD1 = Atom("CD1", carbon_d1, 0.0, 1.0, " ", " CD1", 0, "C") carbon_d2 = calculateCoordinates(CA, CB, CG, CG_CD2_length, CB_CG_CD2_angle, CA_CB_CG_CD2_diangle) CD2 = Atom("CD2", carbon_d2, 0.0, 1.0, " ", " CD2", 0, "C") ##Create Residue Data Structure res = Residue((" ", segID, " "), "LEU", " ") res.add(N) res.add(CA) res.add(C) res.add(O) res.add(CB) res.add(CG) res.add(CD1) res.add(CD2) return res
def makeAsp(segID: int, N, CA, C, O, geo: AspGeo) -> Residue: """Creates an Aspartic Acid residue""" ##R-Group CA_CB_length = geo.CA_CB_length C_CA_CB_angle = geo.C_CA_CB_angle N_C_CA_CB_diangle = geo.N_C_CA_CB_diangle CB_CG_length = geo.CB_CG_length CA_CB_CG_angle = geo.CA_CB_CG_angle N_CA_CB_CG_diangle = geo.N_CA_CB_CG_diangle CG_OD1_length = geo.CG_OD1_length CB_CG_OD1_angle = geo.CB_CG_OD1_angle CA_CB_CG_OD1_diangle = geo.CA_CB_CG_OD1_diangle CG_OD2_length = geo.CG_OD2_length CB_CG_OD2_angle = geo.CB_CG_OD2_angle CA_CB_CG_OD2_diangle = geo.CA_CB_CG_OD2_diangle carbon_b = calculateCoordinates(N, C, CA, CA_CB_length, C_CA_CB_angle, N_C_CA_CB_diangle) CB = Atom("CB", carbon_b, 0.0, 1.0, " ", " CB", 0, "C") carbon_g = calculateCoordinates(N, CA, CB, CB_CG_length, CA_CB_CG_angle, N_CA_CB_CG_diangle) CG = Atom("CG", carbon_g, 0.0, 1.0, " ", " CG", 0, "C") oxygen_d1 = calculateCoordinates(CA, CB, CG, CG_OD1_length, CB_CG_OD1_angle, CA_CB_CG_OD1_diangle) OD1 = Atom("OD1", oxygen_d1, 0.0, 1.0, " ", " OD1", 0, "O") oxygen_d2 = calculateCoordinates(CA, CB, CG, CG_OD2_length, CB_CG_OD2_angle, CA_CB_CG_OD2_diangle) OD2 = Atom("OD2", oxygen_d2, 0.0, 1.0, " ", " OD2", 0, "O") res = Residue((" ", segID, " "), "ASP", " ") res.add(N) res.add(CA) res.add(C) res.add(O) res.add(CB) res.add(CG) res.add(OD1) res.add(OD2) return res
def build_3pnucleic_representation(self, old_struct, new_st): """ builds new structure composed of atom_name atoms only for nucleic acids these are ["C4'", "P", "N1"/"N9"] N1 is taken for ADE and GUA; N9 for CYT, URA, THY """ for resi in old_struct.struct.get_residues(): if resi.has_id("N9"): atom_names = ["C4'", "P", "N9"] else: atom_names = ["C4'", "P", "N1"] new_chain = list(new_st.get_chains())[0] for atom in resi: if atom.name in atom_names: resi = atom.get_parent() if new_chain.has_id(resi.id): pass else: new_resi = Residue(resi.id, resi.resname, " ") new_chain.add(new_resi) new_resi.add(atom) del self.fa_struct
def select_structure(selector, structure): new_structure = Structure(structure.id) for model in structure: if not selector.accept_model(model): continue new_model = Model(model.id, model.serial_num) new_structure.add(new_model) for chain in model: if not selector.accept_chain(chain): continue new_chain = Chain(chain.id) new_model.add(new_chain) for residue in chain: if not selector.accept_residue(residue): continue new_residue = Residue(residue.id, residue.resname, residue.segid) new_chain.add(new_residue) for atom in residue: if selector.accept_atom(atom): new_residue.add(atom) return new_structure
def createPDBFile(self): "Create test CIF file with 12 Atoms in icosahedron vertexes" from Bio.PDB.Structure import Structure from Bio.PDB.Model import Model from Bio.PDB.Chain import Chain from Bio.PDB.Residue import Residue from Bio.PDB.Atom import Atom from Bio.PDB.mmcifio import MMCIFIO import os CIFFILENAME = "/tmp/out.cif" # create atom struct with ico simmety (i222r) icosahedron = Icosahedron(circumscribed_radius=100, orientation='222r') pentomVectorI222r = icosahedron.getVertices() # create biopython object structure = Structure('result') # structure_id model = Model(1, 1) # model_id,serial_num structure.add(model) chain = Chain('A') # chain Id model.add(chain) for i, v in enumerate(pentomVectorI222r, 1): res_id = (' ', i, ' ') # first arg ' ' -> aTOm else heteroatom res_name = "ALA" #+ str(i) # define name of residue res_segid = ' ' residue = Residue(res_id, res_name, res_segid) chain.add(residue) # ATOM name, coord, bfactor, occupancy, altloc, fullname, serial_number, # element=None) atom = Atom('CA', v, 0., 1., " ", " CA ", i, "C") residue.add(atom) io = MMCIFIO() io.set_structure(structure) # delete file if exists if os.path.exists(CIFFILENAME): os.remove(CIFFILENAME) io.save(CIFFILENAME) return CIFFILENAME
def create_structure(coords, pdb_type, remove_masked): """Create the structure. Args: coords: 3D coordinates of structure pdb_type: predict or actual structure remove_masked: whether to include masked atoms. If false, the masked atoms have coordinates of [0,0,0]. Returns: structure """ name = protein.id_ structure = Structure(name) model = Model(0) chain = Chain('A') for i, residue in enumerate(protein.primary): residue = AA_LETTERS[residue] if int(protein.mask[i]) == 1 or remove_masked == False: new_residue = Residue((' ', i + 1, ' '), residue, ' ') j = 3 * i atom_list = ['N', 'CA', 'CB'] for k, atom in enumerate(atom_list): new_atom = Atom(name=atom, coord=coords[j + k, :], bfactor=0, occupancy=1, altloc=' ', fullname=" {} ".format(atom), serial_number=0) new_residue.add(new_atom) chain.add(new_residue) model.add(chain) structure.add(model) io = PDBIO() io.set_structure(structure) io.save(save_dir + name + '_' + pdb_type + '.pdb') return structure
def makeGly(segID: int, N, CA, C, O, geo: Geo) -> Residue: """Creates a Glycine residue""" res = Residue((" ", segID, " "), "GLY", " ") res.add(N) res.add(CA) res.add(C) res.add(O) return res
def makePro(segID: int, N, CA, C, O, geo: ProGeo) -> Residue: """Creates a Proline residue""" ##R-Group CA_CB_length = geo.CA_CB_length C_CA_CB_angle = geo.C_CA_CB_angle N_C_CA_CB_diangle = geo.N_C_CA_CB_diangle CB_CG_length = geo.CB_CG_length CA_CB_CG_angle = geo.CA_CB_CG_angle N_CA_CB_CG_diangle = geo.N_CA_CB_CG_diangle CG_CD_length = geo.CG_CD_length CB_CG_CD_angle = geo.CB_CG_CD_angle CA_CB_CG_CD_diangle = geo.CA_CB_CG_CD_diangle carbon_b = calculateCoordinates(N, C, CA, CA_CB_length, C_CA_CB_angle, N_C_CA_CB_diangle) CB = Atom("CB", carbon_b, 0.0, 1.0, " ", " CB", 0, "C") carbon_g = calculateCoordinates(N, CA, CB, CB_CG_length, CA_CB_CG_angle, N_CA_CB_CG_diangle) CG = Atom("CG", carbon_g, 0.0, 1.0, " ", " CG", 0, "C") carbon_d = calculateCoordinates(CA, CB, CG, CG_CD_length, CB_CG_CD_angle, CA_CB_CG_CD_diangle) CD = Atom("CD", carbon_d, 0.0, 1.0, " ", " CD", 0, "C") ##Create Residue Data Structure res = Residue((" ", segID, " "), "PRO", " ") res.add(N) res.add(CA) res.add(C) res.add(O) res.add(CB) res.add(CG) res.add(CD) return res
def retrieve_ca_model(structure): """ chains are represented only by main chain atoms (Calfas or C4') """ reduced_struct = Structure('clustering_model') my_model = Model(0) reduced_struct.add(my_model) main_chain_atoms = [] for ch in structure[0]: my_chain = Chain(ch.id) reduced_struct[0].add(my_chain) for resi in ch: for atom in resi: #print "----", resi.id, resi.get_segid(), ch.id if atom.get_name() == "CA" or atom.get_name() == "C4'" or atom.get_name() == "C4*": my_residue = Residue((' ',resi.id[1],' '),resi.get_resname(),' ') atom = Atom('CA',atom.coord, 0, ' ', ' ', 'CA',atom.get_serial_number()) my_chain.add(my_residue) my_residue.add(atom) main_chain_atoms.append(atom) return reduced_struct
def atoms_to_residues(atoms, atomsPerRes, seqid, resnames=None): """ Builds a list of residues from a list of atoms, where each residue i the list has 'atomsPerRes' atoms per residue. All residues are set to 'A', if no residue names are given. """ # Check the arguments if (len(atoms) % atomsPerRes) != 0: raise ValueError, "Mismatch between list length and atoms per residues." if resnames==None: resnames = [" A" for _ in xrange(len(atoms)/atomsPerRes)] residues = [] res = None for (i,atom) in enumerate(atoms): # Residue number resnumber = i // atomsPerRes # Create a new residue if (i % atomsPerRes) == 0: if res!=None: residues.append(res) res = Residue((" ", resnumber, " "), resnames[resnumber], seqid) res.add(atom) # Add an atom else: res.add(atom) if res!=None: residues.append(res) return residues
def makeAla(segID, N, CA, C, O, geo): '''Creates an Alanine residue''' ##R-Group CA_CB_length=geo.CA_CB_length C_CA_CB_angle=geo.C_CA_CB_angle N_C_CA_CB_diangle=geo.N_C_CA_CB_diangle carbon_b= calculateCoordinates(N, C, CA, CA_CB_length, C_CA_CB_angle, N_C_CA_CB_diangle) CB= Atom("CB", carbon_b, 0.0 , 1.0, " "," CB", 0,"C") ##Create Residue Data Structure res = Residue((' ', segID, ' '), "ALA", ' ') res.add(N) res.add(CA) res.add(C) res.add(O) res.add(CB) return res
def makeAla(segID: int, N, CA, C, O, geo: AlaGeo) -> Residue: """Creates an Alanine residue""" ##R-Group CA_CB_length = geo.CA_CB_length C_CA_CB_angle = geo.C_CA_CB_angle N_C_CA_CB_diangle = geo.N_C_CA_CB_diangle carbon_b = calculateCoordinates(N, C, CA, CA_CB_length, C_CA_CB_angle, N_C_CA_CB_diangle) CB = Atom("CB", carbon_b, 0.0, 1.0, " ", " CB", 0, "C") res = Residue((" ", segID, " "), "ALA", " ") res.add(N) res.add(CA) res.add(C) res.add(O) res.add(CB) return res
def makeRes(segID, N, CA, C, O, geo): '''Creates a Glycine residue''' ##Create Residue Data Structure res= Residue((' ', segID, ' '), aa1to3[geo.residue_name], ' ') res.add(N) res.add(CA) res.add(C) res.add(O) return res
def makeGly(segID, N, CA, C, O, geo): '''Creates a Glycine residue''' ##Create Residue Data Structure res= Residue((' ', segID, ' '), "GLY", ' ') res.add(N) res.add(CA) res.add(C) res.add(O) ##print(res) return res
def makeGly(segID: int, N, CA, C, O, geo: Geo) -> Residue: """Creates a Glycine residue""" ##Create Residue Data Structure res = Residue((" ", segID, " "), "GLY", " ") res.add(N) res.add(CA) res.add(C) res.add(O) ##print(res) return res
def build_martini_representation(self, old_struct, new_st): """ Reduces complexity of protein residue to the MARTINI coarse grained model: CA, O, Bead(s) in specific atom location. Reference: Monticelli et al. The MARTINI coarse-grained force field: extension to proteins. J. Chem. Theory Comput. (2008) vol. 4 (5) pp. 819-834 """ conversion_table = { "L": ["CG"], "V": ["CB"], "E": ["CB"], "d": ["CG"], "T": ["CB"], "Q": ["CB"], "S": ["CB"], "A": [], "G": [], "K": ["CG", "CE"], "I": ["CD1"], "R": ["CG", "NE"], "N": ["CG"], "P": ["CG"], "F": ["CG", "CE1", "CE2"], "Y": ["CG", "CE1", "CE2"], "H": ["CB", "ND1", "NE2"], "M": ["CG"], "W": ["CB", "CD1", "CD2", "CE2"], "C": ["SG"], "LEU": ["CG"], "VAL": ["CB"], "GLU": ["CB"], "ASP": ["CG"], "THR": ["CB"], "GLN": ["CB"], "SER": ["CB"], "ALA": [], "GLY": [], "LYS": ["CG", "CE"], "ILE": ["CD1"], "ARG": ["CG", "NE"], "ASN": ["CG"], "PRO": ["CG"], "PHE": ["CG", "CE1", "CE2"], "TYR": ["CG", "CE1", "CE2"], "HIS": ["CB", "ND1", "NE2"], "MET": ["CG"], "TRP": ["CB", "CD1", "CD2", "CE2"], "CYS": ["SG"], } for resi in old_struct.struct.get_residues(): new_chain = list(new_st.get_chains())[0] #print "@@@", resi.resname, resi.id hetname = resi.id[0].split("_") if hetname[0] == "H": continue for atom in resi: resname = resi.resname.strip() if atom.name in conversion_table[resname] or atom.name == "CA": resi = atom.get_parent() if new_chain.has_id(resi.id): pass else: new_resi = Residue(resi.id, resi.resname, " ") new_chain.add(new_resi) new_resi.add(atom) del self.fa_struct
def makeTrp(segID: int, N, CA, C, O, geo: TrpGeo) -> Residue: """Creates a Tryptophan residue""" ##R-Group CA_CB_length = geo.CA_CB_length C_CA_CB_angle = geo.C_CA_CB_angle N_C_CA_CB_diangle = geo.N_C_CA_CB_diangle CB_CG_length = geo.CB_CG_length CA_CB_CG_angle = geo.CA_CB_CG_angle N_CA_CB_CG_diangle = geo.N_CA_CB_CG_diangle CG_CD1_length = geo.CG_CD1_length CB_CG_CD1_angle = geo.CB_CG_CD1_angle CA_CB_CG_CD1_diangle = geo.CA_CB_CG_CD1_diangle CG_CD2_length = geo.CG_CD2_length CB_CG_CD2_angle = geo.CB_CG_CD2_angle CA_CB_CG_CD2_diangle = geo.CA_CB_CG_CD2_diangle CD1_NE1_length = geo.CD1_NE1_length CG_CD1_NE1_angle = geo.CG_CD1_NE1_angle CB_CG_CD1_NE1_diangle = geo.CB_CG_CD1_NE1_diangle CD2_CE2_length = geo.CD2_CE2_length CG_CD2_CE2_angle = geo.CG_CD2_CE2_angle CB_CG_CD2_CE2_diangle = geo.CB_CG_CD2_CE2_diangle CD2_CE3_length = geo.CD2_CE3_length CG_CD2_CE3_angle = geo.CG_CD2_CE3_angle CB_CG_CD2_CE3_diangle = geo.CB_CG_CD2_CE3_diangle CE2_CZ2_length = geo.CE2_CZ2_length CD2_CE2_CZ2_angle = geo.CD2_CE2_CZ2_angle CG_CD2_CE2_CZ2_diangle = geo.CG_CD2_CE2_CZ2_diangle CE3_CZ3_length = geo.CE3_CZ3_length CD2_CE3_CZ3_angle = geo.CD2_CE3_CZ3_angle CG_CD2_CE3_CZ3_diangle = geo.CG_CD2_CE3_CZ3_diangle CZ2_CH2_length = geo.CZ2_CH2_length CE2_CZ2_CH2_angle = geo.CE2_CZ2_CH2_angle CD2_CE2_CZ2_CH2_diangle = geo.CD2_CE2_CZ2_CH2_diangle carbon_b = calculateCoordinates(N, C, CA, CA_CB_length, C_CA_CB_angle, N_C_CA_CB_diangle) CB = Atom("CB", carbon_b, 0.0, 1.0, " ", " CB", 0, "C") carbon_g = calculateCoordinates(N, CA, CB, CB_CG_length, CA_CB_CG_angle, N_CA_CB_CG_diangle) CG = Atom("CG", carbon_g, 0.0, 1.0, " ", " CG", 0, "C") carbon_d1 = calculateCoordinates(CA, CB, CG, CG_CD1_length, CB_CG_CD1_angle, CA_CB_CG_CD1_diangle) CD1 = Atom("CD1", carbon_d1, 0.0, 1.0, " ", " CD1", 0, "C") carbon_d2 = calculateCoordinates(CA, CB, CG, CG_CD2_length, CB_CG_CD2_angle, CA_CB_CG_CD2_diangle) CD2 = Atom("CD2", carbon_d2, 0.0, 1.0, " ", " CD2", 0, "C") nitrogen_e1 = calculateCoordinates(CB, CG, CD1, CD1_NE1_length, CG_CD1_NE1_angle, CB_CG_CD1_NE1_diangle) NE1 = Atom("NE1", nitrogen_e1, 0.0, 1.0, " ", " NE1", 0, "N") carbon_e2 = calculateCoordinates(CB, CG, CD2, CD2_CE2_length, CG_CD2_CE2_angle, CB_CG_CD2_CE2_diangle) CE2 = Atom("CE2", carbon_e2, 0.0, 1.0, " ", " CE2", 0, "C") carbon_e3 = calculateCoordinates(CB, CG, CD2, CD2_CE3_length, CG_CD2_CE3_angle, CB_CG_CD2_CE3_diangle) CE3 = Atom("CE3", carbon_e3, 0.0, 1.0, " ", " CE3", 0, "C") carbon_z2 = calculateCoordinates(CG, CD2, CE2, CE2_CZ2_length, CD2_CE2_CZ2_angle, CG_CD2_CE2_CZ2_diangle) CZ2 = Atom("CZ2", carbon_z2, 0.0, 1.0, " ", " CZ2", 0, "C") carbon_z3 = calculateCoordinates(CG, CD2, CE3, CE3_CZ3_length, CD2_CE3_CZ3_angle, CG_CD2_CE3_CZ3_diangle) CZ3 = Atom("CZ3", carbon_z3, 0.0, 1.0, " ", " CZ3", 0, "C") carbon_h2 = calculateCoordinates(CD2, CE2, CZ2, CZ2_CH2_length, CE2_CZ2_CH2_angle, CD2_CE2_CZ2_CH2_diangle) CH2 = Atom("CH2", carbon_h2, 0.0, 1.0, " ", " CH2", 0, "C") ##Create Residue DS res = Residue((" ", segID, " "), "TRP", " ") res.add(N) res.add(CA) res.add(C) res.add(O) res.add(CB) res.add(CG) res.add(CD1) res.add(CD2) res.add(NE1) res.add(CE2) res.add(CE3) res.add(CZ2) res.add(CZ3) res.add(CH2) return res
def makeTyr(segID: int, N, CA, C, O, geo: TyrGeo) -> Residue: """Creates a Tyrosine residue""" ##R-Group CA_CB_length = geo.CA_CB_length C_CA_CB_angle = geo.C_CA_CB_angle N_C_CA_CB_diangle = geo.N_C_CA_CB_diangle CB_CG_length = geo.CB_CG_length CA_CB_CG_angle = geo.CA_CB_CG_angle N_CA_CB_CG_diangle = geo.N_CA_CB_CG_diangle CG_CD1_length = geo.CG_CD1_length CB_CG_CD1_angle = geo.CB_CG_CD1_angle CA_CB_CG_CD1_diangle = geo.CA_CB_CG_CD1_diangle CG_CD2_length = geo.CG_CD2_length CB_CG_CD2_angle = geo.CB_CG_CD2_angle CA_CB_CG_CD2_diangle = geo.CA_CB_CG_CD2_diangle CD1_CE1_length = geo.CD1_CE1_length CG_CD1_CE1_angle = geo.CG_CD1_CE1_angle CB_CG_CD1_CE1_diangle = geo.CB_CG_CD1_CE1_diangle CD2_CE2_length = geo.CD2_CE2_length CG_CD2_CE2_angle = geo.CG_CD2_CE2_angle CB_CG_CD2_CE2_diangle = geo.CB_CG_CD2_CE2_diangle CE1_CZ_length = geo.CE1_CZ_length CD1_CE1_CZ_angle = geo.CD1_CE1_CZ_angle CG_CD1_CE1_CZ_diangle = geo.CG_CD1_CE1_CZ_diangle CZ_OH_length = geo.CZ_OH_length CE1_CZ_OH_angle = geo.CE1_CZ_OH_angle CD1_CE1_CZ_OH_diangle = geo.CD1_CE1_CZ_OH_diangle carbon_b = calculateCoordinates(N, C, CA, CA_CB_length, C_CA_CB_angle, N_C_CA_CB_diangle) CB = Atom("CB", carbon_b, 0.0, 1.0, " ", " CB", 0, "C") carbon_g = calculateCoordinates(N, CA, CB, CB_CG_length, CA_CB_CG_angle, N_CA_CB_CG_diangle) CG = Atom("CG", carbon_g, 0.0, 1.0, " ", " CG", 0, "C") carbon_d1 = calculateCoordinates(CA, CB, CG, CG_CD1_length, CB_CG_CD1_angle, CA_CB_CG_CD1_diangle) CD1 = Atom("CD1", carbon_d1, 0.0, 1.0, " ", " CD1", 0, "C") carbon_d2 = calculateCoordinates(CA, CB, CG, CG_CD2_length, CB_CG_CD2_angle, CA_CB_CG_CD2_diangle) CD2 = Atom("CD2", carbon_d2, 0.0, 1.0, " ", " CD2", 0, "C") carbon_e1 = calculateCoordinates(CB, CG, CD1, CD1_CE1_length, CG_CD1_CE1_angle, CB_CG_CD1_CE1_diangle) CE1 = Atom("CE1", carbon_e1, 0.0, 1.0, " ", " CE1", 0, "C") carbon_e2 = calculateCoordinates(CB, CG, CD2, CD2_CE2_length, CG_CD2_CE2_angle, CB_CG_CD2_CE2_diangle) CE2 = Atom("CE2", carbon_e2, 0.0, 1.0, " ", " CE2", 0, "C") carbon_z = calculateCoordinates(CG, CD1, CE1, CE1_CZ_length, CD1_CE1_CZ_angle, CG_CD1_CE1_CZ_diangle) CZ = Atom("CZ", carbon_z, 0.0, 1.0, " ", " CZ", 0, "C") oxygen_h = calculateCoordinates(CD1, CE1, CZ, CZ_OH_length, CE1_CZ_OH_angle, CD1_CE1_CZ_OH_diangle) OH = Atom("OH", oxygen_h, 0.0, 1.0, " ", " OH", 0, "O") ##Create Residue Data S res = Residue((" ", segID, " "), "TYR", " ") res.add(N) res.add(CA) res.add(C) res.add(O) res.add(CB) res.add(CG) res.add(CD1) res.add(CE1) res.add(CD2) res.add(CE2) res.add(CZ) res.add(OH) return res
def makePhe(segID: int, N, CA, C, O, geo: PheGeo) -> Residue: """Creates a Phenylalanine residue""" ##R-Group CA_CB_length = geo.CA_CB_length C_CA_CB_angle = geo.C_CA_CB_angle N_C_CA_CB_diangle = geo.N_C_CA_CB_diangle CB_CG_length = geo.CB_CG_length CA_CB_CG_angle = geo.CA_CB_CG_angle N_CA_CB_CG_diangle = geo.N_CA_CB_CG_diangle CG_CD1_length = geo.CG_CD1_length CB_CG_CD1_angle = geo.CB_CG_CD1_angle CA_CB_CG_CD1_diangle = geo.CA_CB_CG_CD1_diangle CG_CD2_length = geo.CG_CD2_length CB_CG_CD2_angle = geo.CB_CG_CD2_angle CA_CB_CG_CD2_diangle = geo.CA_CB_CG_CD2_diangle CD1_CE1_length = geo.CD1_CE1_length CG_CD1_CE1_angle = geo.CG_CD1_CE1_angle CB_CG_CD1_CE1_diangle = geo.CB_CG_CD1_CE1_diangle CD2_CE2_length = geo.CD2_CE2_length CG_CD2_CE2_angle = geo.CG_CD2_CE2_angle CB_CG_CD2_CE2_diangle = geo.CB_CG_CD2_CE2_diangle CE1_CZ_length = geo.CE1_CZ_length CD1_CE1_CZ_angle = geo.CD1_CE1_CZ_angle CG_CD1_CE1_CZ_diangle = geo.CG_CD1_CE1_CZ_diangle carbon_b = calculateCoordinates(N, C, CA, CA_CB_length, C_CA_CB_angle, N_C_CA_CB_diangle) CB = Atom("CB", carbon_b, 0.0, 1.0, " ", " CB", 0, "C") carbon_g = calculateCoordinates(N, CA, CB, CB_CG_length, CA_CB_CG_angle, N_CA_CB_CG_diangle) CG = Atom("CG", carbon_g, 0.0, 1.0, " ", " CG", 0, "C") carbon_d1 = calculateCoordinates(CA, CB, CG, CG_CD1_length, CB_CG_CD1_angle, CA_CB_CG_CD1_diangle) CD1 = Atom("CD1", carbon_d1, 0.0, 1.0, " ", " CD1", 0, "C") carbon_d2 = calculateCoordinates(CA, CB, CG, CG_CD2_length, CB_CG_CD2_angle, CA_CB_CG_CD2_diangle) CD2 = Atom("CD2", carbon_d2, 0.0, 1.0, " ", " CD2", 0, "C") carbon_e1 = calculateCoordinates(CB, CG, CD1, CD1_CE1_length, CG_CD1_CE1_angle, CB_CG_CD1_CE1_diangle) CE1 = Atom("CE1", carbon_e1, 0.0, 1.0, " ", " CE1", 0, "C") carbon_e2 = calculateCoordinates(CB, CG, CD2, CD2_CE2_length, CG_CD2_CE2_angle, CB_CG_CD2_CE2_diangle) CE2 = Atom("CE2", carbon_e2, 0.0, 1.0, " ", " CE2", 0, "C") carbon_z = calculateCoordinates(CG, CD1, CE1, CE1_CZ_length, CD1_CE1_CZ_angle, CG_CD1_CE1_CZ_diangle) CZ = Atom("CZ", carbon_z, 0.0, 1.0, " ", " CZ", 0, "C") res = Residue((" ", segID, " "), "PHE", " ") res.add(N) res.add(CA) res.add(C) res.add(O) res.add(CB) res.add(CG) res.add(CD1) res.add(CE1) res.add(CD2) res.add(CE2) res.add(CZ) return res
def makeHis(segID: int, N, CA, C, O, geo: HisGeo) -> Residue: """Creates a Histidine residue""" ##R-Group CA_CB_length = geo.CA_CB_length C_CA_CB_angle = geo.C_CA_CB_angle N_C_CA_CB_diangle = geo.N_C_CA_CB_diangle CB_CG_length = geo.CB_CG_length CA_CB_CG_angle = geo.CA_CB_CG_angle N_CA_CB_CG_diangle = geo.N_CA_CB_CG_diangle CG_ND1_length = geo.CG_ND1_length CB_CG_ND1_angle = geo.CB_CG_ND1_angle CA_CB_CG_ND1_diangle = geo.CA_CB_CG_ND1_diangle CG_CD2_length = geo.CG_CD2_length CB_CG_CD2_angle = geo.CB_CG_CD2_angle CA_CB_CG_CD2_diangle = geo.CA_CB_CG_CD2_diangle ND1_CE1_length = geo.ND1_CE1_length CG_ND1_CE1_angle = geo.CG_ND1_CE1_angle CB_CG_ND1_CE1_diangle = geo.CB_CG_ND1_CE1_diangle CD2_NE2_length = geo.CD2_NE2_length CG_CD2_NE2_angle = geo.CG_CD2_NE2_angle CB_CG_CD2_NE2_diangle = geo.CB_CG_CD2_NE2_diangle carbon_b = calculateCoordinates(N, C, CA, CA_CB_length, C_CA_CB_angle, N_C_CA_CB_diangle) CB = Atom("CB", carbon_b, 0.0, 1.0, " ", " CB", 0, "C") carbon_g = calculateCoordinates(N, CA, CB, CB_CG_length, CA_CB_CG_angle, N_CA_CB_CG_diangle) CG = Atom("CG", carbon_g, 0.0, 1.0, " ", " CG", 0, "C") nitrogen_d1 = calculateCoordinates(CA, CB, CG, CG_ND1_length, CB_CG_ND1_angle, CA_CB_CG_ND1_diangle) ND1 = Atom("ND1", nitrogen_d1, 0.0, 1.0, " ", " ND1", 0, "N") carbon_d2 = calculateCoordinates(CA, CB, CG, CG_CD2_length, CB_CG_CD2_angle, CA_CB_CG_CD2_diangle) CD2 = Atom("CD2", carbon_d2, 0.0, 1.0, " ", " CD2", 0, "C") carbon_e1 = calculateCoordinates(CB, CG, ND1, ND1_CE1_length, CG_ND1_CE1_angle, CB_CG_ND1_CE1_diangle) CE1 = Atom("CE1", carbon_e1, 0.0, 1.0, " ", " CE1", 0, "C") nitrogen_e2 = calculateCoordinates(CB, CG, CD2, CD2_NE2_length, CG_CD2_NE2_angle, CB_CG_CD2_NE2_diangle) NE2 = Atom("NE2", nitrogen_e2, 0.0, 1.0, " ", " NE2", 0, "N") res = Residue((" ", segID, " "), "HIS", " ") res.add(N) res.add(CA) res.add(C) res.add(O) res.add(CB) res.add(CG) res.add(ND1) res.add(CD2) res.add(CE1) res.add(NE2) return res
def makeGln(segID: int, N, CA, C, O, geo: GlnGeo) -> Residue: """Creates a Glutamine residue""" ##R-Group CA_CB_length = geo.CA_CB_length C_CA_CB_angle = geo.C_CA_CB_angle N_C_CA_CB_diangle = geo.N_C_CA_CB_diangle CB_CG_length = geo.CB_CG_length CA_CB_CG_angle = geo.CA_CB_CG_angle N_CA_CB_CG_diangle = geo.N_CA_CB_CG_diangle CG_CD_length = geo.CG_CD_length CB_CG_CD_angle = geo.CB_CG_CD_angle CA_CB_CG_CD_diangle = geo.CA_CB_CG_CD_diangle CD_OE1_length = geo.CD_OE1_length CG_CD_OE1_angle = geo.CG_CD_OE1_angle CB_CG_CD_OE1_diangle = geo.CB_CG_CD_OE1_diangle CD_NE2_length = geo.CD_NE2_length CG_CD_NE2_angle = geo.CG_CD_NE2_angle CB_CG_CD_NE2_diangle = geo.CB_CG_CD_NE2_diangle carbon_b = calculateCoordinates(N, C, CA, CA_CB_length, C_CA_CB_angle, N_C_CA_CB_diangle) CB = Atom("CB", carbon_b, 0.0, 1.0, " ", " CB", 0, "C") carbon_g = calculateCoordinates(N, CA, CB, CB_CG_length, CA_CB_CG_angle, N_CA_CB_CG_diangle) CG = Atom("CG", carbon_g, 0.0, 1.0, " ", " CG", 0, "C") carbon_d = calculateCoordinates(CA, CB, CG, CG_CD_length, CB_CG_CD_angle, CA_CB_CG_CD_diangle) CD = Atom("CD", carbon_d, 0.0, 1.0, " ", " CD", 0, "C") oxygen_e1 = calculateCoordinates(CB, CG, CD, CD_OE1_length, CG_CD_OE1_angle, CB_CG_CD_OE1_diangle) OE1 = Atom("OE1", oxygen_e1, 0.0, 1.0, " ", " OE1", 0, "O") nitrogen_e2 = calculateCoordinates(CB, CG, CD, CD_NE2_length, CG_CD_NE2_angle, CB_CG_CD_NE2_diangle) NE2 = Atom("NE2", nitrogen_e2, 0.0, 1.0, " ", " NE2", 0, "N") ##Create Residue DS res = Residue((" ", segID, " "), "GLN", " ") res.add(N) res.add(CA) res.add(C) res.add(O) res.add(CB) res.add(CG) res.add(CD) res.add(OE1) res.add(NE2) return res
def makeLys(segID: int, N, CA, C, O, geo: LysGeo) -> Residue: """Creates a Lysine residue""" ##R-Group CA_CB_length = geo.CA_CB_length C_CA_CB_angle = geo.C_CA_CB_angle N_C_CA_CB_diangle = geo.N_C_CA_CB_diangle CB_CG_length = geo.CB_CG_length CA_CB_CG_angle = geo.CA_CB_CG_angle N_CA_CB_CG_diangle = geo.N_CA_CB_CG_diangle CG_CD_length = geo.CG_CD_length CB_CG_CD_angle = geo.CB_CG_CD_angle CA_CB_CG_CD_diangle = geo.CA_CB_CG_CD_diangle CD_CE_length = geo.CD_CE_length CG_CD_CE_angle = geo.CG_CD_CE_angle CB_CG_CD_CE_diangle = geo.CB_CG_CD_CE_diangle CE_NZ_length = geo.CE_NZ_length CD_CE_NZ_angle = geo.CD_CE_NZ_angle CG_CD_CE_NZ_diangle = geo.CG_CD_CE_NZ_diangle carbon_b = calculateCoordinates(N, C, CA, CA_CB_length, C_CA_CB_angle, N_C_CA_CB_diangle) CB = Atom("CB", carbon_b, 0.0, 1.0, " ", " CB", 0, "C") carbon_g = calculateCoordinates(N, CA, CB, CB_CG_length, CA_CB_CG_angle, N_CA_CB_CG_diangle) CG = Atom("CG", carbon_g, 0.0, 1.0, " ", " CG", 0, "C") carbon_d = calculateCoordinates(CA, CB, CG, CG_CD_length, CB_CG_CD_angle, CA_CB_CG_CD_diangle) CD = Atom("CD", carbon_d, 0.0, 1.0, " ", " CD", 0, "C") carbon_e = calculateCoordinates(CB, CG, CD, CD_CE_length, CG_CD_CE_angle, CB_CG_CD_CE_diangle) CE = Atom("CE", carbon_e, 0.0, 1.0, " ", " CE", 0, "C") nitrogen_z = calculateCoordinates(CG, CD, CE, CE_NZ_length, CD_CE_NZ_angle, CG_CD_CE_NZ_diangle) NZ = Atom("NZ", nitrogen_z, 0.0, 1.0, " ", " NZ", 0, "N") res = Residue((" ", segID, " "), "LYS", " ") res.add(N) res.add(CA) res.add(C) res.add(O) res.add(CB) res.add(CG) res.add(CD) res.add(CE) res.add(NZ) return res
def makeArg(segID: int, N, CA, C, O, geo: ArgGeo) -> Residue: """Creates an Arginie residue""" ##R-Group CA_CB_length = geo.CA_CB_length C_CA_CB_angle = geo.C_CA_CB_angle N_C_CA_CB_diangle = geo.N_C_CA_CB_diangle CB_CG_length = geo.CB_CG_length CA_CB_CG_angle = geo.CA_CB_CG_angle N_CA_CB_CG_diangle = geo.N_CA_CB_CG_diangle CG_CD_length = geo.CG_CD_length CB_CG_CD_angle = geo.CB_CG_CD_angle CA_CB_CG_CD_diangle = geo.CA_CB_CG_CD_diangle CD_NE_length = geo.CD_NE_length CG_CD_NE_angle = geo.CG_CD_NE_angle CB_CG_CD_NE_diangle = geo.CB_CG_CD_NE_diangle NE_CZ_length = geo.NE_CZ_length CD_NE_CZ_angle = geo.CD_NE_CZ_angle CG_CD_NE_CZ_diangle = geo.CG_CD_NE_CZ_diangle CZ_NH1_length = geo.CZ_NH1_length NE_CZ_NH1_angle = geo.NE_CZ_NH1_angle CD_NE_CZ_NH1_diangle = geo.CD_NE_CZ_NH1_diangle CZ_NH2_length = geo.CZ_NH2_length NE_CZ_NH2_angle = geo.NE_CZ_NH2_angle CD_NE_CZ_NH2_diangle = geo.CD_NE_CZ_NH2_diangle carbon_b = calculateCoordinates(N, C, CA, CA_CB_length, C_CA_CB_angle, N_C_CA_CB_diangle) CB = Atom("CB", carbon_b, 0.0, 1.0, " ", " CB", 0, "C") carbon_g = calculateCoordinates(N, CA, CB, CB_CG_length, CA_CB_CG_angle, N_CA_CB_CG_diangle) CG = Atom("CG", carbon_g, 0.0, 1.0, " ", " CG", 0, "C") carbon_d = calculateCoordinates(CA, CB, CG, CG_CD_length, CB_CG_CD_angle, CA_CB_CG_CD_diangle) CD = Atom("CD", carbon_d, 0.0, 1.0, " ", " CD", 0, "C") nitrogen_e = calculateCoordinates(CB, CG, CD, CD_NE_length, CG_CD_NE_angle, CB_CG_CD_NE_diangle) NE = Atom("NE", nitrogen_e, 0.0, 1.0, " ", " NE", 0, "N") carbon_z = calculateCoordinates(CG, CD, NE, NE_CZ_length, CD_NE_CZ_angle, CG_CD_NE_CZ_diangle) CZ = Atom("CZ", carbon_z, 0.0, 1.0, " ", " CZ", 0, "C") nitrogen_h1 = calculateCoordinates(CD, NE, CZ, CZ_NH1_length, NE_CZ_NH1_angle, CD_NE_CZ_NH1_diangle) NH1 = Atom("NH1", nitrogen_h1, 0.0, 1.0, " ", " NH1", 0, "N") nitrogen_h2 = calculateCoordinates(CD, NE, CZ, CZ_NH2_length, NE_CZ_NH2_angle, CD_NE_CZ_NH2_diangle) NH2 = Atom("NH2", nitrogen_h2, 0.0, 1.0, " ", " NH2", 0, "N") res = Residue((" ", segID, " "), "ARG", " ") res.add(N) res.add(CA) res.add(C) res.add(O) res.add(CB) res.add(CG) res.add(CD) res.add(NE) res.add(CZ) res.add(NH1) res.add(NH2) return res
def makeIle(segID: int, N, CA, C, O, geo: IleGeo) -> Residue: """Creates an Isoleucine residue""" ##R-group CA_CB_length = geo.CA_CB_length C_CA_CB_angle = geo.C_CA_CB_angle N_C_CA_CB_diangle = geo.N_C_CA_CB_diangle CB_CG1_length = geo.CB_CG1_length CA_CB_CG1_angle = geo.CA_CB_CG1_angle N_CA_CB_CG1_diangle = geo.N_CA_CB_CG1_diangle CB_CG2_length = geo.CB_CG2_length CA_CB_CG2_angle = geo.CA_CB_CG2_angle N_CA_CB_CG2_diangle = geo.N_CA_CB_CG2_diangle CG1_CD1_length = geo.CG1_CD1_length CB_CG1_CD1_angle = geo.CB_CG1_CD1_angle CA_CB_CG1_CD1_diangle = geo.CA_CB_CG1_CD1_diangle carbon_b = calculateCoordinates(N, C, CA, CA_CB_length, C_CA_CB_angle, N_C_CA_CB_diangle) CB = Atom("CB", carbon_b, 0.0, 1.0, " ", " CB", 0, "C") carbon_g1 = calculateCoordinates(N, CA, CB, CB_CG1_length, CA_CB_CG1_angle, N_CA_CB_CG1_diangle) CG1 = Atom("CG1", carbon_g1, 0.0, 1.0, " ", " CG1", 0, "C") carbon_g2 = calculateCoordinates(N, CA, CB, CB_CG2_length, CA_CB_CG2_angle, N_CA_CB_CG2_diangle) CG2 = Atom("CG2", carbon_g2, 0.0, 1.0, " ", " CG2", 0, "C") carbon_d1 = calculateCoordinates(CA, CB, CG1, CG1_CD1_length, CB_CG1_CD1_angle, CA_CB_CG1_CD1_diangle) CD1 = Atom("CD1", carbon_d1, 0.0, 1.0, " ", " CD1", 0, "C") res = Residue((" ", segID, " "), "ILE", " ") res.add(N) res.add(CA) res.add(C) res.add(O) res.add(CB) res.add(CG1) res.add(CG2) res.add(CD1) return res
else: bfactors = zeros(len(points)) model = Model(1) chain = Chain("A") structure = Structure("ref") num_count = 0 for i in range(0,shape(points)[0]): num_count = num_count +1 res_id = (' ',num_count,' ') residue = Residue(res_id,'ALA',' ') cur_coord = tuple(points[i]) bfactor = bfactors[i] atom = Atom('CA',cur_coord,bfactor,0,' ','CA',num_count,'C') residue.add(atom) chain.add(residue) model.add(chain) structure.add(model) # -------------------------------------------------------------------- io=PDBIO() io.set_structure(structure) if ( args['dst'] is None): fn = sys.stdout io.save(fn) if ( args['link'] ): for i in range(1,shape(points)[0]): fn.write( "CONECT%5d%5d\n" % (i, i+1)) else: fn = args['dst']
}, { 'name': 'C5', 'coord': PDB.Atom.array([66.402, 44.364, 11.291], 'f'), 'bfactor': 44.20, 'occupancy': 1.0, 'altloc': ' ', 'fullname': 'C5', 'serial_number': 7 }, { 'name': 'C6', 'coord': PDB.Atom.array([65.095, 44.589, 11.192], 'f'), 'bfactor': 44.33, 'occupancy': 1.0, 'altloc': ' ', 'fullname': 'C6', 'serial_number': 8 }] my_structure.add(my_model) my_model.add(my_chain) my_chain.add(my_residue) for atom in atoms: my_atom = Atom(atom['name'], atom['coord'], atom['bfactor'], atom['occupancy'], atom['altloc'], atom['fullname'], atom['serial_number']) my_residue.add(my_atom) out = PDBIO() out.set_structure(my_structure) out.save('my_new_structure.pdb')