def readSmiles(file): """ lit un fichier SMILES et renvoi les infos (liste des molecules, listes des noms, listes des id) """ f = open(file) lines = f.readlines( ) # lit le contenu du fichier, chaque ligne est une chaine de caractere f.close() smilesError = "error.smi" sdfError = "error.sdf" mol = [] for line in lines: # pour chacune des lignes du fichier data = line.split( ) # decoupe la ligne en plusieurs chaines de caracteres pr pouvoir acceder a chacune des informations conenues ds la ligne if len(data) > 1: try: mol.append(iMolecule(smiles=data[0], id=data[1])) except: ferror = open(smilesError, "w") ferror.write(data[0] + "\t" + data[1] + "\n") ferror.close() os.system("babel -ismi " + smilesError + " -osdf " + sdfError) mol.extend(readSDF(sdfError)) else: try: mol.append(iMolecule(smiles=data[0])) except: ferror = open(smilesError, "w") ferror.write(data[0] + "\n") ferror.close() os.system("babel -ismi " + smilesError + " -osdf " + sdfError) mol.extend(readSDF(sdfError)) return mol
def readSmiles(file): """ lit un fichier SMILES et renvoi les infos (liste des molecules, listes des noms, listes des id) """ f=open(file) lines = f.readlines() # lit le contenu du fichier, chaque ligne est une chaine de caractere f.close() smilesError = "error.smi" sdfError = "error.sdf" mol=[] for line in lines : # pour chacune des lignes du fichier data = line.split() # decoupe la ligne en plusieurs chaines de caracteres pr pouvoir acceder a chacune des informations conenues ds la ligne if len(data)>1 : try : mol.append(iMolecule(smiles=data[0],id=data[1])) except : ferror=open(smilesError,"w") ferror.write(data[0]+"\t"+data[1]+"\n") ferror.close() os.system("babel -ismi "+smilesError+" -osdf "+sdfError) mol.extend(readSDF(sdfError)) else : try : mol.append(iMolecule(smiles=data[0])) except : ferror=open(smilesError,"w") ferror.write(data[0]+"\n") ferror.close() os.system("babel -ismi "+smilesError+" -osdf "+sdfError) mol.extend(readSDF(sdfError)) return mol
def readSDF(file): """ idem ci-dessus pr fichier SDF """ f = open(file) reader = MDL.sdin(f) mo = [] try: m = reader.next()[0] while m: if m.fields.keys(): for key in m.fields.keys(): if "ID" in key: mo.append(iMolecule(sd=m, id=m.fields[key])) break else: mo.append(iMolecule(sd=m, id=m.name)) m = reader.next()[0] except: f.close() return mo
def readSDF(file) : """ idem ci-dessus pr fichier SDF """ f = open(file) reader = MDL.sdin(f) mo = [] try : m = reader.next()[0] while m : if m.fields.keys(): for key in m.fields.keys(): if "ID" in key : mo.append(iMolecule(sd=m,id=m.fields[key])) break else : mo.append(iMolecule(sd=m,id=m.name)) m = reader.next()[0] except : f.close() return mo
it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. """ from iMolecule import * mOri = iMolecule("c1(C(=NO)Cc2ccccc2)c([n]([c]3[c]1cccc3)C)C") mOri.graph2molecule() fileSdf = open("testEnergyThiago1_3D_multiconf_bruno.sdf") reader = MDL.sdin(fileSdf) for i in range(21): m = reader.next()[0] for at in m.atoms: at.mmffAtomType = getMMFFAtomType(at) tmp = str(len(m.atoms)) + "\n500\n100\n" for atom in m.atoms: vdwParams = VDW_PARAM[str(atom.mmffAtomType)] tmp += str(atom.x)+" "+str(atom.y)+" "+str(atom.z)+" "+str(getMMFFPartialAtomicCharge(atom))+" "+ \