B
    b                 @   s@   d Z ddlmZmZ ddlmZ ddlmZ G dd deZ	dS )zE
This package contains classes responsible for loading rdkit objects
    )print_functionabsolute_import)PDBFile)StringIOc               @   s4   e Zd Zedd Zed
ddZedddZd	S )RDKitc             C   s$   ddl m} t|| }t|S )a  
        Load a :class:`Mol` object and return a populated :class:`Structure`
        instance

        Parameters
        ----------
        rmol: :class:`Mol`
            RDKit :class:`Mol` object to convert

        Examples
        --------
        >>> from rdkit import Chem
        >>> import parmed as pmd
        >>> mol = Chem.MolFromSmiles('Cc1ccccc1')
        >>> struct = pmd.load_rdkit(mol)
        r   )Chem)rdkitr   r   ZMolToPDBBlockr   parse)Zrmolr   Zfh r
   1lib/python3.7/site-packages/parmed/rdkit/rdkit.pyload   s    z
RDKit.loadTc             C   sT   ddl m} ddlm} || }|r6|j|ddd t|}|sPd|_d|_	|S )a@  
        Load smiles string to :class:`Structure`

        Parameters
        ----------
        smiles : str, smiles
        coordinates : bool, default True
            if True, use `rdkit.Chem.AllChem.EmbedMultipleConfs to assign coordinates

        Returns
        -------
        parm : :class:`Structure`
        r   )r   )AllChemT)ZuseExpTorsionAnglePrefsZuseBasicKnowledgeN)
r   r   Z
rdkit.Chemr   ZMolFromSmilesZEmbedMultipleConfsr   r   coordinatesZ_coordinates)Zsmilesr   r   r   molZparmr
   r
   r   from_smiles"   s    

zRDKit.from_smilesFc             C   sB   ddl m} |j| dd}|r0t|}t|S dd |D S dS )a  
        Load SDF file to :class:`Structure`

        Parameters
        ----------
        filename: str
        structure : bool, default False
            if True, return a :class:`Structure`
            if False, return a list of :class:`Structure`
        r   )r   F)ZremoveHsc             S   s   g | ]}t |qS r
   )r   r   ).0r   r
   r
   r   
<listcomp>Q   s    z"RDKit.from_sdf.<locals>.<listcomp>N)r   r   ZSDMolSuppliernextr   r   )filenameZ	structurer   Zsdf_collectionr   r
   r
   r   from_sdf?   s    
zRDKit.from_sdfN)T)F)__name__
__module____qualname__staticmethodr   r   r   r
   r
   r
   r   r   
   s
   r   N)
__doc__Z
__future__r   r   Zparmed.formatsr   Zparmed.utils.six.movesr   objectr   r
   r
   r
   r   <module>   s   