chemprop.data.splitting
=======================

.. py:module:: chemprop.data.splitting


Attributes
----------

.. autoapisummary::

   chemprop.data.splitting.logger
   chemprop.data.splitting.Datapoints
   chemprop.data.splitting.MulticomponentDatapoints


Classes
-------

.. autoapisummary::

   chemprop.data.splitting.SplitType


Functions
---------

.. autoapisummary::

   chemprop.data.splitting.make_split_indices
   chemprop.data.splitting.split_data_by_indices


Module Contents
---------------

.. py:data:: logger

.. py:data:: Datapoints

.. py:data:: MulticomponentDatapoints

.. py:class:: SplitType

   Bases: :py:obj:`chemprop.utils.utils.EnumMapping`


   Enum where members are also (and must be) strings


   .. py:attribute:: SCAFFOLD_BALANCED


   .. py:attribute:: RANDOM_WITH_REPEATED_SMILES


   .. py:attribute:: RANDOM


   .. py:attribute:: KENNARD_STONE


   .. py:attribute:: KMEANS


.. py:function:: make_split_indices(mols, split = 'random', sizes = (0.8, 0.1, 0.1), seed = 0, num_replicates = 1, num_folds = None)

   Splits data into training, validation, and test splits.

   :param mols: Sequence of RDKit molecules to use for structure based splitting or any object with a length
                equal to the number of datapoints if using random splitting
   :type mols: Sequence[Chem.Mol] | Sized
   :param split: Split type, one of ~chemprop.data.utils.SplitType, by default "random"
   :type split: SplitType | str, optional
   :param sizes: 3-tuple with the proportions of data in the train, validation, and test sets, by default
                 (0.8, 0.1, 0.1). Set the middle value to 0 for a two way split.
   :type sizes: tuple[float, float, float], optional
   :param seed: The random seed passed to astartes, by default 0
   :type seed: int, optional
   :param num_replicates: Number of replicates, by default 1
   :type num_replicates: int, optional
   :param num_folds: This argument was removed in v2.1 - use `num_replicates` instead.
   :type num_folds: None, optional

   :returns: 2- or 3-member tuple containing num_replicates length lists of training, validation, and testing indexes.

             .. important::
                 Validation may or may not be present
   :rtype: tuple[list[list[int]], ...]

   :raises ValueError: Requested split sizes tuple not of length 3
   :raises ValueError: Unsupported split method requested


.. py:function:: split_data_by_indices(data, train_indices = None, val_indices = None, test_indices = None)

   Splits data into training, validation, and test groups based on split indices given.


