class_docstr: Class for doing data splits based on the Tanimoto similarity between ECFP4
  fingerprints.
  
  This class tries to split the data such that the molecules in each dataset are
  as different as possible from the ones in the other datasets.  This makes it a
  very stringent test of models.  Predicting the test and validation sets may
  require extrapolating far outside the training data.
  
  The running time for this splitter scales as O(n^2) in the number of samples.
  Splitting large datasets can take a long time.
  
  Note
  ----
  This class requires RDKit to be installed.
  
  Examples
  --------
  >>> import deepchem as dc
  >>> import numpy as np
  >>> # creation of demo data set with some smiles strings
  >>> smiles= ['C', 'CC', 'CCC', 'CCCC', 'CCCCC']
  >>> Xs = np.zeros(len(smiles))
  >>> # creation of a deepchem dataset with the smile codes in the ids field
  >>> dataset = dc.data.DiskDataset.from_numpy(X=Xs,ids=smiles)
  >>> fingerprintsplitter = dc.splits.FingerprintSplitter()
  >>> train_dataset, test_dataset = fingerprintsplitter.train_test_split(dataset)
  >>> print(train_dataset.ids)
  ['C' 'CCCCC' 'CCCC' 'CCC']
  >>> print(test_dataset.ids)
  ['CC']
class_docstr_tok: ["Class","for","doing","data","splits","based","on","the","Tanimoto","similarity","between","ECFP4","fingerprints",".","This","class","tries","to","split","the","data","such","that","the","molecules","in","each","dataset","are","as","different","as","possible","from","the","ones","in","the","other","datasets",".","This","makes","it","a","very","stringent","test","of","models",".","Predicting","the","test","and","validation","sets","may","require","extrapolating","far","outside","the","training","data",".","The","running","time","for","this","splitter","scales","as","O","(","n^2",")","in","the","number","of","samples",".","Splitting","large","datasets","can","take","a","long","time",".","Note","--","--","This","class","requires","RDKit","to","be","installed",".","Examples","--","--","--","--",">",">",">","import","deepchem","as","dc",">",">",">","import","numpy","as","np",">",">",">","#","creation","of","demo","data","set","with","some","smiles","strings",">",">",">","smiles=","[","'","C","'",",","'CC","'",",","'CCC","'",",","'CCCC","'",",","'CCCCC","'","]",">",">",">","Xs","=","np.zeros","(","len","(","smiles",")",")",">",">",">","#","creation","of","a","deepchem","dataset","with","the","smile","codes","in","the","ids","field",">",">",">","dataset","=","dc.data.DiskDataset.from_numpy","(","X=Xs",",","ids=smiles",")",">",">",">","fingerprintsplitter","=","dc.splits.FingerprintSplitter","(",")",">",">",">","train_dataset",",","test_dataset","=","fingerprintsplitter.train_test_split","(","dataset",")",">",">",">","print","(","train_dataset.ids",")","[","'","C","'","'CCCCC","'","'CCCC","'","'CCC","'","]",">",">",">","print","(","test_dataset.ids",")","[","'CC","'","]"]
docstr: Create a FingerprintSplitter.
docstr_tok: ["Create","a","FingerprintSplitter","."]
code: def __init__(self):
      """Create a FingerprintSplitter."""
      super(FingerprintSplitter, self).__init__()
  
imports: import inspect
  import itertools
  import logging
  import os
  import random
  import tempfile
  from typing import Any, Dict, Iterator, List, Optional, Sequence, Tuple, Union
  import deepchem
  import numpy
  import pandas
  from deepchem.data import Dataset, DiskDataset
  from deepchem.utils import get_print_threshold
label_desc: Use image node_id 1 to create a new FingerprintSplitter object from inherited base classes: Splitter with example: obj = FingerprintSplitter()