def get_descriptors(df): PandasTools.ChangeMoleculeRendering(renderer='String') Lmol = df['ROMol'] Ldescriptors = [] for m in Lmol: # Calculer les propriétés chimiques MW = round(Descriptors.ExactMolWt(m), 1) LogP = round(Descriptors.MolLogP(m), 1) TPSA = round(Descriptors.TPSA(m), 1) LabuteASA = round(Descriptors.LabuteASA(m), 1) HBA = Descriptors.NumHAcceptors(m) HBD = Descriptors.NumHDonors(m) FCSP3 = Lipinski.FractionCSP3(m) MQN8 = rdMolDescriptors.MQNs_(m)[7] MQN10 = rdMolDescriptors.MQNs_(m)[9] NAR = Lipinski.NumAromaticRings(m) NRB = Chem.Descriptors.NumRotatableBonds(m) Ldescriptors.append([ MW, LogP, TPSA, LabuteASA, HBA, HBD, FCSP3, MQN8, MQN10, NAR, NRB ]) # Create pandas row for conditions results with values and information whether rule of five is violated prop_df = pd.DataFrame(Ldescriptors) prop_df.columns = [ 'MW', 'LogP', 'TPSA', 'LabuteASA', 'HBA', 'HBD', 'FCSP3', 'MQN8', 'MQN10', 'NAR', 'NRB' ] prop_df = prop_df.set_index(df.index) return prop_df
def get_frags_number(df): PandasTools.ChangeMoleculeRendering(renderer='String') New_column = pd.DataFrame({ 'Frags_number': [len(Chem.rdmolops.GetMolFrags(mol)) for mol in df['ROMol']] }) New_column = New_column.set_index(df.index) return New_column
def get_data(self): self.data['Molecule'] = self.molecules self.data['Reference'] = self.reference df = pd.DataFrame(data=self.data) PandasTools.ChangeMoleculeRendering(df) # reinitialize instance self.__init__() return df
def test_AddMoleculeColumnToFrame(self): df = PandasTools.LoadSDF(getStreamIO(methane + peroxide), isomericSmiles=True, smilesName='Smiles') PandasTools.ChangeMoleculeRendering(frame=df, renderer='String') del df['ROMol'] self.assertNotIn('ROMol', str(df)) PandasTools.AddMoleculeColumnToFrame(df, includeFingerprints=False) self.assertIn('ROMol', str(df))
def show_decomp(mols, cores, options, item=False): decomp = do_decomp(mols, cores, options) if item: rows = decomp.GetRGroupsAsRows() items = [ '{}:{}'.format(group, Chem.MolToSmiles(row[group])) for row in rows for group in row ] return ' '.join(items) else: cols = decomp.GetRGroupsAsColumns() cols['mol'] = mols cols['input core'] = cores[0] df = pd.DataFrame(cols) PandasTools.ChangeMoleculeRendering(df) return HTML(df.to_html())
def toDataFrame(self, fields=None, molAsImage=True, sketch=True): """ Returns a pandas.DataFrame of the SmallMolLib object. Parameters ---------- fields: list The list of fields to convert into a pandas DataFrame column molAsImage: bool If True, the rdkit.Chem.rdchem.Mol is converted into an image sketch: bool If True, the molecule are rendered to be 2D Returns ------- dataframe: pandas.DataFrame The pandas DataFrame """ from rdkit.Chem.AllChem import Compute2DCoords import pandas as pd from copy import deepcopy if fields is not None: if not isinstance(fields, list): raise TypeError( f"The argument fields passed {type(fields)} should be a list " ) else: fields = ["ligname", "_mol"] if molAsImage else ["ligname"] records = [] indexes = [] for i, m in enumerate(self._mols): row = dict((f, m.__getattribute__(f)) for f in fields) if sketch: mm = deepcopy(m._mol) Compute2DCoords(mm) row["_mol"] = mm records.append(row) indexes.append(i) df = pd.DataFrame(records, columns=fields, index=indexes) if molAsImage: PandasTools.ChangeMoleculeRendering(df) return df
def setUp(self): PandasTools.InstallPandasTools() PandasTools.ChangeMoleculeRendering(renderer='PNG') PandasTools.pd.set_option('display.max_columns', None) self._molRepresentation = PandasTools.molRepresentation self._highlightSubstructures = PandasTools.highlightSubstructures
def setUp(self): PandasTools.InstallPandasTools() PandasTools.ChangeMoleculeRendering(renderer='PNG') self._molRepresentation = PandasTools.molRepresentation self._highlightSubstructures = PandasTools.highlightSubstructures