On Jun 12, 2023, at 3:15 AM, Dominik Sordyl via ChimeraX-users <chimerax-users@cgl.ucsf.edu> wrote:
Hi Eric,
Thanks, for your advices.
Yes, I have created bonds between atoms. But one thing that I did not mention was that it is a coarse-grained representation containing only some heavy atoms of each residue.
I think I am putting the residues in the right order. Unfortunately I still cannot get chains.
structure.polymers() returns an empty list.
structure.bonded_group() returns a list of all atoms in the structure
I don't know if I can show you the whole code but this is the part I am using for creating a structure:
s = AtomicStructure(session, name=file_name,
auto_style=True)
from chimerax.atomic.struct_edit import add_atom
from chimerax.atomic.struct_edit import add_bond
last_residue_id = 0
for i, v in enumerate(res_atom_set):
coord_id = 0
for x in range(len(v)):
atom_num = list(v.values())[x] #number
of atoms in each residue
new_r = s.new_residue(pdb_residues[last_residue_id],chains[last_residue_id], x) #adds
new residue - of name pdb_residues[x], as a part of chain chain[chain_id], position x in chain
last_residue_id += 1
for _ in range(atom_num): #
iterate the 'number of atoms in residue' times
add_atom(pdb_atoms.pop(0), pdb_elements.pop(0), new_r,np.array(coords[0][coord_id])) #adds
atoms to the residues
coord_id += 1
#Create bonds
if "LIGAND" in molecule_type_lookup_dict.values():
for x in pdb.pdb_connect:
s.new_bond(s.atoms[x[0]], s.atoms[x[1]])
else:
for x in bonds:
s.new_bond(s.atoms[x[0]], s.atoms[x[1]])
s.add_coordsets(np.array(coords),
replace=True)
coordset_slider(session, [s], pause_frames=speed)
return [s], ""
"res_atom_set" is a dictionary {residue_id: num of atoms}
"pdb_residues" is a list with residues' names - earlier obtained from pdb
"chains" is a list of length of number of residues, which contains chain for every residue "[A, A, A, A, B, B, B, B]"
Most of the features work - it is displayed correctly, the trajectory can be "played" and so on. But actually just now I noticed that when I print(len(s.chains)) it return 0, but color bychain works fine somehow.
And if this coloring option works, then why rainbow is not?
Best,
Dominik
use
the insert/precedes keyword
Should just be the "precedes" keyword. "Insert" is for specifying an insertion code.
--Eric
_______________________________________________
ChimeraX-users
mailing list -- chimerax-users@cgl.ucsf.edu
To
unsubscribe send an email to chimerax-users-leave@cgl.ucsf.edu
Manage
subscription: