Hi,

I suspect that you don't modify the data structure you are iterating over but
rather the iterating object. For instance when you iterate over a list and try
to change the element, the following will not work (you probably know this):

Input:
l=[1,2,3]
for i in l:
     i=5
print l

Output:
[1, 2, 3]

I don't know whether Swig copies the data structure or allows you to directly
modify the C++ data structure when using the iterator object. Instead, you might
try to initialize a new object of the corresponding class and retreive the
corresponding atom/residue via the appropriate getter function.

You could also try to create an empty molecule and add all atoms to it after
modifying them and print the new one. Here is an example how to iterate over all
atoms via the corresponding ID:

import openbabel as op
def get_coordinates(mol):
     a=op.OBAtom()
     coordinates=[None]*mol.NumAtoms()
     for idx in range(1,mol.NumAtoms()+1):
         a = mol.GetAtom(idx)
     coordinates[idx-1] = [a.GetX(),a.GetY(),a.GetZ()]
     return coordinates

I just tried to iterate over all residues in one of my molecules but I noticed
that mol.NumResidues() returned 0 (might be because I used an XYZ-file that does
not store residue information). Are you sure your are actually iterating over
all residues and atoms within them?

Also, if you have a look at the method you are calling:

void OBResidue::SetAtomID(OBAtom *atom, const string &id)
{
     for ( unsigned int i = 0 ; i < _atoms.size() ; ++i )
     if (_atoms[i] == atom)
     _atomid[i] = id;
}

This checks for equivalence of pointers, so I guess they are just not
equivalent, for whatever reason.

Cheers and I hope this helps,
Torsten

> hi all,
>
> i'm trying to use a basic
>       `pybel.readfile()` --> modify molecule --> `newmol.write()` pattern,
> but something is not going right.
>
> the specific task is to add unique atom indices to a PDBQT file
> without them, but that conversion seems to be working fine.
> but the resulting output PDBQT contains only the REMARKS header
> from the original file?  i'm not able to debug very far because
> of the Swig wrapper around the OBMol.
>
> i'm attaching the routine, and a sample PDBQT file.
>
> does anyone see the problem?  thanks for any pointers,
>
>       Rik

------------------------------------------------------------------------------
_______________________________________________
OpenBabel-discuss mailing list
OpenBabel-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss

Reply via email to