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