예제 #1
0
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
예제 #2
0
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
예제 #4
0
 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))
예제 #5
0
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())
예제 #6
0
    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
예제 #7
0
 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
예제 #8
0
 def setUp(self):
     PandasTools.InstallPandasTools()
     PandasTools.ChangeMoleculeRendering(renderer='PNG')
     self._molRepresentation = PandasTools.molRepresentation
     self._highlightSubstructures = PandasTools.highlightSubstructures