Commit ·
60e7cd3
1
Parent(s): fb99284
refactor error handling of invalid SMILES
Browse files
ChemID.py
CHANGED
|
@@ -18,29 +18,32 @@ def ResolveChemical(chemName, IDtype):
|
|
| 18 |
|
| 19 |
if IDtype == 'CAS':
|
| 20 |
cas = chemName
|
| 21 |
-
if not is_cas(cas):
|
| 22 |
-
name = 'INVALID CAS'
|
| 23 |
-
error = 3
|
| 24 |
-
return (name, cas, None, None, None, error)
|
| 25 |
smiles = None
|
| 26 |
name = None
|
| 27 |
Mw = None
|
| 28 |
im64 = None
|
| 29 |
error = 0
|
| 30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 31 |
smiles = cas2smiles(cas)
|
| 32 |
|
| 33 |
if smiles:
|
| 34 |
name = cas2name(cas)
|
| 35 |
try:
|
| 36 |
mol = Chem.MolFromSmiles(smiles)
|
|
|
|
|
|
|
|
|
|
| 37 |
Mw = Descriptors.MolWt(mol)
|
| 38 |
im = ImageFromSmiles(smiles)
|
| 39 |
im64 = Imageto64(im)
|
| 40 |
-
|
| 41 |
-
error = 2
|
| 42 |
else:
|
| 43 |
-
error = 1
|
| 44 |
elif IDtype == 'SMILES':
|
| 45 |
smiles = chemName
|
| 46 |
cas = None
|
|
@@ -55,10 +58,13 @@ def ResolveChemical(chemName, IDtype):
|
|
| 55 |
|
| 56 |
try:
|
| 57 |
mol = Chem.MolFromSmiles(smiles)
|
|
|
|
|
|
|
|
|
|
| 58 |
Mw = Descriptors.MolWt(mol)
|
| 59 |
im = ImageFromSmiles(smiles)
|
| 60 |
im64 = Imageto64(im)
|
| 61 |
-
|
| 62 |
error = 2
|
| 63 |
elif IDtype == 'common':
|
| 64 |
name = chemName
|
|
@@ -74,10 +80,13 @@ def ResolveChemical(chemName, IDtype):
|
|
| 74 |
cas = name2cas(name)
|
| 75 |
try:
|
| 76 |
mol = Chem.MolFromSmiles(smiles)
|
|
|
|
|
|
|
|
|
|
| 77 |
Mw = Descriptors.MolWt(mol)
|
| 78 |
im = ImageFromSmiles(smiles)
|
| 79 |
im64 = Imageto64(im)
|
| 80 |
-
|
| 81 |
error = 2
|
| 82 |
else:
|
| 83 |
error = 1
|
|
@@ -88,7 +97,7 @@ def ResolveChemical(chemName, IDtype):
|
|
| 88 |
cas = None
|
| 89 |
Mw = None
|
| 90 |
im64 = None
|
| 91 |
-
error = 4
|
| 92 |
|
| 93 |
# if we couldn't find a name or CAS (but do have SMILES)
|
| 94 |
if not error:
|
|
|
|
| 18 |
|
| 19 |
if IDtype == 'CAS':
|
| 20 |
cas = chemName
|
|
|
|
|
|
|
|
|
|
|
|
|
| 21 |
smiles = None
|
| 22 |
name = None
|
| 23 |
Mw = None
|
| 24 |
im64 = None
|
| 25 |
error = 0
|
| 26 |
|
| 27 |
+
if not is_cas(cas):
|
| 28 |
+
error = 3 #invalid cas
|
| 29 |
+
return (name, cas, smiles, Mw, im64, error)
|
| 30 |
+
|
| 31 |
smiles = cas2smiles(cas)
|
| 32 |
|
| 33 |
if smiles:
|
| 34 |
name = cas2name(cas)
|
| 35 |
try:
|
| 36 |
mol = Chem.MolFromSmiles(smiles)
|
| 37 |
+
except:
|
| 38 |
+
error = 2 #invalid smiles
|
| 39 |
+
if mol:
|
| 40 |
Mw = Descriptors.MolWt(mol)
|
| 41 |
im = ImageFromSmiles(smiles)
|
| 42 |
im64 = Imageto64(im)
|
| 43 |
+
else:
|
| 44 |
+
error = 2 #invalid smiles
|
| 45 |
else:
|
| 46 |
+
error = 1 # no smiles found
|
| 47 |
elif IDtype == 'SMILES':
|
| 48 |
smiles = chemName
|
| 49 |
cas = None
|
|
|
|
| 58 |
|
| 59 |
try:
|
| 60 |
mol = Chem.MolFromSmiles(smiles)
|
| 61 |
+
except:
|
| 62 |
+
error = 2
|
| 63 |
+
if mol:
|
| 64 |
Mw = Descriptors.MolWt(mol)
|
| 65 |
im = ImageFromSmiles(smiles)
|
| 66 |
im64 = Imageto64(im)
|
| 67 |
+
else:
|
| 68 |
error = 2
|
| 69 |
elif IDtype == 'common':
|
| 70 |
name = chemName
|
|
|
|
| 80 |
cas = name2cas(name)
|
| 81 |
try:
|
| 82 |
mol = Chem.MolFromSmiles(smiles)
|
| 83 |
+
except:
|
| 84 |
+
error = 2
|
| 85 |
+
if mol:
|
| 86 |
Mw = Descriptors.MolWt(mol)
|
| 87 |
im = ImageFromSmiles(smiles)
|
| 88 |
im64 = Imageto64(im)
|
| 89 |
+
else:
|
| 90 |
error = 2
|
| 91 |
else:
|
| 92 |
error = 1
|
|
|
|
| 97 |
cas = None
|
| 98 |
Mw = None
|
| 99 |
im64 = None
|
| 100 |
+
error = 4 # invalid IDtype selection, probably not possible
|
| 101 |
|
| 102 |
# if we couldn't find a name or CAS (but do have SMILES)
|
| 103 |
if not error:
|