"""
This type stub file was generated by pyright.
"""

"""ODDT pipeline framework for virtual screening"""
class virtualscreening:
    def __init__(self, n_cpu=..., verbose=..., chunksize=...) -> None:
        """Virtual Screening pipeline stack

        Parameters
        ----------
        n_cpu: int (default=-1)
            The number of parallel procesors to use

        verbose: bool (default=False)
            Verbosity flag for some methods
        """
        ...
    
    def load_ligands(self, fmt, ligands_file, **kwargs): # -> None:
        """Loads file with ligands.

        Parameters
        ----------
        file_type: string
            Type of molecular file

        ligands_file: string
            Path to a file, which is loaded to pipeline

        """
        ...
    
    def apply_filter(self, expression, soft_fail=...): # -> None:
        """Filtering method, can use raw expressions (strings to be evaled
        in if statement, can use oddt.toolkit.Molecule methods, eg.
        `mol.molwt < 500`)
        Currently supported presets:
            * Lipinski Rule of 5 ('ro5' or 'l5')
            * Fragment Rule of 3 ('ro3')
            * PAINS filter ('pains')

        Parameters
        ----------
        expression: string or list of strings
            Expresion(s) to be used while filtering.

        soft_fail: int (default=0)
            The number of faulures molecule can have to pass filter, aka.
            soft-fails.
        """
        ...
    
    def similarity(self, method, query, cutoff=..., protein=...): # -> None:
        """Similarity filter. Supported structural methods:
            * ift: interaction fingerprints
            * sift: simple interaction fingerprints
            * usr: Ultrafast Shape recognition
            * usr_cat: Ultrafast Shape recognition, Credo Atom Types
            * electroshape: Electroshape, an USR method including partial charges

        Parameters
        ----------
        method: string
            Similarity method used to compare molecules. Avaiale methods:
            * `ifp` - interaction fingerprint (requires a receptor)
            * `sifp` - simple interaction fingerprint (requires a receptor)
            * `usr` - Ultrafast Shape Reckognition
            * `usr_cat` - USR, with CREDO atom types
            * `electroshape` - Electroshape, USR with moments representing
            partial charge

        query: oddt.toolkit.Molecule or list of oddt.toolkit.Molecule
            Query molecules to compare the pipeline to.

        cutoff: float
            Similarity cutoff for filtering molecules. Any similarity lower
            than it will be filtered out.

        protein: oddt.toolkit.Molecule (default = None)
            Protein for underling method. By default it's empty, but
            sturctural fingerprints need one.

        """
        ...
    
    def dock(self, engine, protein, *args, **kwargs): # -> None:
        """Docking procedure.

        Parameters
        ----------
        engine: string
            Which docking engine to use.

        Notes
        -----
        Additional parameters are passed directly to the engine.
        Following docking engines are supported:

        1. Audodock Vina (```engine="autodock_vina"```), see
        :class:`oddt.docking.autodock_vina`.
        """
        ...
    
    def score(self, function, protein=..., *args, **kwargs): # -> None:
        """Scoring procedure compatible with any scoring function implemented
        in ODDT and other pickled SFs which are subclasses of
        `oddt.scoring.scorer`.

        Parameters
        ----------
        function: string
            Which scoring function to use.

        protein: oddt.toolkit.Molecule
            Default protein to use as reference

        Notes
        -----
        Additional parameters are passed directly to the scoring function.
        """
        ...
    
    def fetch(self): # -> Iterator[Unknown]:
        """A method to exhaust the pipeline. Itself it is lazy (a generator)"""
        ...
    
    def write(self, fmt, filename, csv_filename=..., **kwargs): # -> Literal[False] | None:
        """Outputs molecules to a file

        Parameters
        ----------
        file_type: string
            Type of molecular file

        ligands_file: string
            Path to a output file

        csv_filename: string
            Optional path to a CSV file
        """
        ...
    
    def write_csv(self, csv_filename, fields=..., keep_pipe=..., **kwargs): # -> Literal[False] | None:
        """Outputs molecules to a csv file

        Parameters
        ----------
        csv_filename: string
            Optional path to a CSV file

        fields: list (default None)
            List of fields to save in CSV file

        keep_pipe: bool (default=False)
            If set to True, the ligand pipe is sustained.
        """
        ...
    


