rdkit.VLib.Filter.FilterNode

Package rdkit :: Package VLib :: Module Filter :: Class FilterNode |
[hide private]
[frames] | no frames]

# Class FilterNode

source code

       object --+
                |
    Node.VLibNode --+
                    |
                   FilterNode

Known Subclasses:
  - NodeLib.SmartsMolFilter.SmartsFilter
  - , NodeLib.SmilesDupeFilter.DupeFilter

    base class for nodes which filter their input

    Assumptions:

      - filter function takes a number of arguments equal to the
        number of inputs we have.  It returns a bool

      - inputs (parents) can be stepped through in lockstep

      - we return a tuple if there's more than one input

    Usage Example:
      >>> from rdkit.VLib.Supply import SupplyNode
      >>> def func(a,b):
      ...   return a+b < 5
      >>> filt = FilterNode(func=func)
      >>> suppl1 = SupplyNode(contents=[1,2,3,3])
      >>> suppl2 = SupplyNode(contents=[1,2,3,1])
      >>> filt.AddParent(suppl1)
      >>> filt.AddParent(suppl2)
      >>> v = [x for x in filt]
      >>> v
      [(1, 1), (2, 2), (3, 1)]
      >>> filt.reset()
      >>> v = [x for x in filt]
      >>> v
      [(1, 1), (2, 2), (3, 1)]
      >>> filt.Destroy()

      Negation is also possible:
      >>> filt = FilterNode(func=func,negate=1)
      >>> suppl1 = SupplyNode(contents=[1,2,3,3])
      >>> suppl2 = SupplyNode(contents=[1,2,3,1])
      >>> filt.AddParent(suppl1)
      >>> filt.AddParent(suppl2)
      >>> v = [x for x in filt]
      >>> v
      [(3, 3)]
      >>> filt.Destroy()

      With no function, just return the inputs:
      >>> filt = FilterNode()
      >>> suppl1 = SupplyNode(contents=[1,2,3,3])
      >>> filt.AddParent(suppl1)
      >>> v = [x for x in filt]
      >>> v
      [1, 2, 3, 3]
      >>> filt.Destroy()

Instance Methods | [hide private]
__init__(self, func=None, negate=0, **kwargs) x.__init__(...) initializes x; see help(type(x)) for signature | source code
SetNegate(self, state) | source code
Negate(self) | source code
next(self) part of the iterator interface | source code
__next__(self) part of the iterator interface | source code
Inherited from `Node.VLibNode`: `AddChild`, `AddParent`, `Destroy`, `GetChildren`, `GetParents`, `RemoveChild`, `RemoveParent`, `__iter__`, `reset` Inherited from `object`: `__delattr__`, `__format__`, `__getattribute__`, `__hash__`, `__new__`, `__reduce__`, `__reduce_ex__`, `__repr__`, `__setattr__`, `__sizeof__`, `__str__`, `__subclasshook__`

Properties | [hide private]
Inherited from `object`: `__class__`

Method Details | [hide private]

### __init__(self, func=None, negate=0, **kwargs) (Constructor) | source code
    x.__init__(...) initializes x; see help(type(x)) for signature
Overrides: object.__init__ (inherited documentation)

### next(self) | source code
    part of the iterator interface

    raises StopIteration on failure
Overrides: Node.VLibNode.next (inherited documentation)

### __next__(self) | source code
    part of the iterator interface

    raises StopIteration on failure
Overrides: Node.VLibNode.next (inherited documentation)