Close, but not quite. You need to delete the C++ atom in the C++ molecule.
Something like...
for atom in mol:
remove.append(atom.OBAtom)
for obatom in remove:
mol.OBMol.DeleteAtom(obatom)
- Noel
On 9 August 2017 at 09:46, David van der Spoel <sp...@xray.bmc.uu.se> wrote:
> Hi,
>
> I am trying to remove ions from sdf compounds that I downloaded from
> pubchem using a python script. The script correctly locates the atoms to
> remove but the del command does not seem to have any effect. Am I making a
> silly python error?
>
> An example input is here https://pubchem.ncbi.nlm.nih.gov/compound/20022
>
> Cheers,
> --
> David van der Spoel, Ph.D., Professor of Biology
> Head of Department, Cell & Molecular Biology, Uppsala University.
> Box 596, SE-75124 Uppsala, Sweden. Phone: +46184714205.
> http://www.icm.uu.se
>
>
> #!/usr/bin/env python3
>
> from pybel import *
> import os, argparse
>
> def parseArguments():
> parser = argparse.ArgumentParser()
> parser.add_argument("-i", "--inputfile", help="Input file for
> reading", type=str,
> default=None)
> parser.add_argument("-o", "--outputfile", help="Output file for
> writing", type=str,
> default="out.sdf")
> args = parser.parse_args()
> return args
>
> if __name__ == '__main__':
> args = parseArguments()
>
> if (args.inputfile):
> print("Inputfile: %s Outputfile %s" % ( args.inputfile,
> args.outputfile ) )
> if (os.path.isfile(args.outputfile)):
> os.remove(args.outputfile)
> outfile = Outputfile("sdf", args.outputfile)
> for mol in readfile("sdf", args.inputfile):
> print("Mol Weight %f" % mol.molwt)
> print("# atoms %d" % len(mol.atoms) )
> remove = []
> for aa in range(len(mol.atoms)):
> atom = mol.atoms[aa]
> # print("Type %s Valence %s" % ( atom.type, atom.valence )
> )
> if ((atom.type == "Cl" or atom.type == "Br") and
> atom.valence == 0):
> # We found an ion
> remove.append(aa)
> print("There are %d atoms to remove" % len(remove))
> for r in remove:
> del mol.atoms[r]
> outfile.write(mol)
> # Only write one molecule, break out of the loop
> break
> outfile.close()
>
> ------------------------------------------------------------
> ------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> OpenBabel-discuss mailing list
> OpenBabel-discuss@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
OpenBabel-discuss mailing list
OpenBabel-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss