-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathsmiles_proc.py
More file actions
76 lines (65 loc) · 1.71 KB
/
smiles_proc.py
File metadata and controls
76 lines (65 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
from rdkit.Chem import AllChem
from rdkit import Chem
from rdkit.Chem.Draw import IPythonConsole
from rdkit.Chem import Draw
from rdkit import RDConfig
from rdkit.Chem.FeatMaps import FeatMaps
from rdkit.Chem import Descriptors
from rdkit.Chem import Crippen
from rdkit.Chem import rdchem
import numpy as np
import pandas as pd
def smiles_features(smile):
smile = str(smile)
m = Chem.MolFromSmiles(smile)
atoms_number = rdchem.Mol.GetNumAtoms(m)
bonds_number = rdchem.Mol.GetNumBonds(m)
f = rdchem.Mol.GetRingInfo(m)
ring_numer = f.NumRings()
return atoms_number , bonds_number, ring_numer
def atom_number(smile):
return sum(1 for c in smile if c.isupper())
def alone_atom_number(s):
return s.count('[')
def bonds_number(smile):
m = Chem.MolFromSmiles(smile)
try:
return rdchem.Mol.GetNumBonds(m)
except:
return 'NaN'
def ring_numer(smile):
m = Chem.MolFromSmiles(smile)
try:
f = rdchem.Mol.GetRingInfo(m)
return f.NumRings()
except:
return 'NaN'
def Mol(smile):
smile = str(smile)
try:
m = Chem.MolFromSmiles(smile)
return Descriptors.MolWt(m)
except:
return 'NaN'
def MorganDensity(smile):
smile = str(smile)
m = Chem.MolFromSmiles(smile)
try:
return Descriptors.FpDensityMorgan1(m)
except:
return 'NaN'
def LogP(smile):
smile = str(smile)
try:
m = Chem.MolFromSmiles(smile)
return Crippen.MolLogP(m)
except:
return 'NaN'
def to_cas(num):
s = str(num)
s = s[:-3]+ '-' + s[-3:-1] +'-' + s[-1]
return s
def count_doubleBond(s):
return s.count('=')
def count_tripleBond(s):
return s.count('#')