コード例 #1
0
 def testDrawRDKit(self):
     m = Chem.MolFromSmiles('c1ccccc1CC1CC1')
     bi = {}
     rdkfp = Chem.RDKFingerprint(m, maxPath=5, bitInfo=bi)
     self.assertTrue(1553 in bi)
     svg1 = Draw.DrawRDKitBit(m, 1553, bi)
     path = bi[1553][0]
     svg2 = Draw.DrawRDKitEnv(m, path)
     self.assertEqual(svg1, svg2)
     self.assertTrue("style='fill:#E5E533;" in svg1)
     self.assertFalse("style='fill:#CCCCCC;" in svg1)
     self.assertFalse("style='fill:#9999E5;" in svg1)
     with self.assertRaises(KeyError):
         Draw.DrawRDKitBit(m, 32, bi)
コード例 #2
0
    def draw_fragments(self, draw_tuple):
        image_list = []
        for tup in draw_tuple:
            mol, bit_ID, fp = tup

            if self.draw_all:
                # one molecule can have multiple fragments
                for i in range(len(fp[bit_ID])):
                    img = Draw.DrawRDKitBit(mol, bit_ID, fp, whichExample=i)
                    image_list.append(img)
            else:
                img = Draw.DrawRDKitBit(mol, bit_ID, fp, whichExample=0)
                image_list.append(img)

        imgs = Image.fromarray(np.concatenate(image_list, axis=0))
        return imgs
コード例 #3
0
    def testDrawRDKit(self):
        m = Chem.MolFromSmiles('c1ccccc1CC1CC1')
        bi = {}
        _ = Chem.RDKFingerprint(m, maxPath=5, bitInfo=bi)
        self.assertTrue(1553 in bi)
        svg1 = Draw.DrawRDKitBit(m, 1553, bi)
        path = bi[1553][0]
        svg2 = Draw.DrawRDKitEnv(m, path)
        self.assertEqual(svg1, svg2)
        self.assertTrue("style='fill:#E5E533;" in svg1)
        self.assertFalse("style='fill:#CCCCCC;" in svg1)
        self.assertFalse("style='fill:#9999E5;" in svg1)
        with self.assertRaises(KeyError):
            Draw.DrawRDKitBit(m, 32, bi)

        if hasattr(Draw, 'MolDraw2DCairo'):
            # Github #3796: make sure we aren't trying to generate metadata:
            png = Draw.DrawRDKitBit(m, 1553, bi, useSVG=False)
            self.assertIn(b'PNG', png)
            self.assertIsNone(Chem.MolFromPNGString(png))
コード例 #4
0
    def draw_fragment(self,
                      fragment_id: Union[str, int],
                      show_zscore: bool = True) -> str:
        """Draw a specified fragmnet.

        Args:
            fragment_id (Union[str, int]): User-defined fragment string, or position of the
                Morgan fingerprint bit to be drawn.
            show_zscore (bool, optional): Annotate drawing with zscore. Defaults to True.

        Returns:
            str: Molecule drawing SVG.
        """

        # images will be annotated with zscore
        legend = f"zscore = {self.zscores[fragment_id]:.2f}" if show_zscore else ""

        # handle drawing of user-defined fragments
        if self.user_frags:
            mol = Chem.MolFromSmarts(fragment_id)
            img = Draw.MolsToGridImage([mol],
                                       molsPerRow=1,
                                       subImgSize=(200, 200),
                                       legends=[legend])

        # handle drawing of auto-generated fragments
        mol = self._get_mol_with_frag(fragment_id)

        bit_info = {}
        if self.fp_type == "morgan":
            _ = rdMolDescriptors.GetMorganFingerprintAsBitVect(
                mol, radius=self.fp_rad, nBits=self.fp_bits, bitInfo=bit_info)

            img = Draw.DrawMorganBit(mol,
                                     fragment_id,
                                     bit_info,
                                     useSVG=True,
                                     legend=legend)

        if self.fp_type == "rdkit":
            _ = Chem.RDKFingerprint(
                mol,
                minPath=self.fp_rad,
                maxPath=self.fp_rad,
                fpSize=self.fp_bits,
                bitInfo=bit_info,
            )

            img = Draw.DrawRDKitBit(mol,
                                    fragment_id,
                                    bit_info,
                                    useSVG=True,
                                    legend=legend)
        return img