Filters structure file, retaining structures that meet the specified criteria. The ligfilter utility filters a structure file based on properties and descriptors. It can filter on any Maestro property, a set of predefined feature counts, or counts of SMARTS patterns for functional groups. This utility supersedes Property Filter, and should be used in preference to it. Input filter files from Property Filter can be read by Ligfilter.

Backend implementation

The command line tool ligfilter is used to implement this node.


Column containing input
Column in the input data table containing molecules in either SD or Maestro format
Filter Conditions
Filter conditions to use. Multiple such conditions may be specified. (see below)
Filter File
File containing list of filter conditions to use. Each condition should be listed on one line, and can be used with the Filter Conditions entered in the text field (for a description of filter conditions, see below).
ASL expression
Specify an ASL condition. Only structures which have any atoms matching this ASL will be retained.
Invert Output
Require match to at least one criterion instead of all criteria
Require match to at least one criterion instead of all criteria.
Description of filter conditions:
  A condition is a one-line expression which describes criteria that a
  particular descriptor must meet for the for a structure to be retained.
  Each filter condition describes one or more criteria that a particular

  To be accepted, a molecule needs to satisfy all specified filter conditions.

  The syntax for a filter condition expression is

     <descriptor> <op> <value> [ ['AND'|'OR'] <op> <value> ] ...

  In case that's hard to decipher, the following are all valid:
     <descriptor> <op> <value>
     <descriptor> <op> <value> AND <op2> <value2>
     <descriptor> <op> <value> OR <op2> <value2>
     <descriptor> <op> <value> OR <value2> OR <value3>
     <descriptor> <op> <value> AND <value2>

  <descriptor> is the name of the descriptor (property name for properties)

  <op> (conditional operator) must be one of the following:
       >  >=  <  <=  ==  !=

  NOTE: If a property condition (see below) consists of nothing but the
        '<descriptor>', then the named property is required to exist,
        but it may have any value.

  Multiple conditions a descriptor may be specified in a single
  expression.  The individual conditions may be separated by operators
  'AND' or 'OR'.

  When 'AND' and 'OR' are both used in an expression, the 'AND' operator
  has higher precedence.  For instance, the expression:
      Num_atoms > 1 AND < 4 OR == 1000
  requires that either #atoms be between 1 and 4, or else equal to 1000.

  Single or double quotes may be used to delimit values containing

  There are 2 types of conditions:
        A property condition allows to retain a ligand only if the specified
        property exists or is within a specified range.

        A definition condition is one that allows filtering a ligand by some
        calculated parameter; like number of atoms, number or aromatic rings,
        or number of occurrences of a specific SMARTS pattern or a set of
        patterns (descriptors).

Criteria file:

  If filter conditions are supplied in a separate criteria file, there must
  be one condition per line.  Lines that start with '# ' are treated
  as comments and blank lines are ignored.

  Example criteria file:
    Num_rings == 1
    Peroxides > 1
    Num_atoms > 100 AND < 1000
    r_epik_State_Penalty > 2.5'
Available Descriptors
H                             Nitriles                          Charged_alkylthiols
B                             Sulfonyl_halides                  Charged_2-nitrophenols
C                             Sulfinyl_halides                  Charged_4-nitrophenols
N                             Sulfenyl_halides                  Charged_3,5-nitrophenols
O                             Acyl_halides                      Acidic_hydrogens
F                             Alkyl_halides                     Charged_amidines
Si                            Alkyl_halides_wo_fluorine         Charged_guanidines
P                             Alkyl_sulfonates                  Charged_enamines
S                             Halopyrimidines                   Charged_anilines
Cl                            Anhydrides                        Charged_dialkyl_anilines
Fe                            1,2-Dicarbonyls                   Charged_diaminobenzenes
Br                            Perhalomethylketones              Charged_2-aminopyridines
I                             Aliphatic_ketones                 Charged_4-aminopyridines
H-N                           Epoxides                          Charged_4-methoxypyridines
H-O                           Aziridines                        Neutral_amines
Charged_amines                Aliphatic_esters                  Tetrazoles
Charged_imines                Aliphatic_thioesters              Catch_for_R-CN4
Charged_amidines              Sulphonate_esters                 Trifluoromethyls
Charged_NH-imidazoles         Phosphonate_esters                Trichloromethyls
Charged_imidazoles            Imines                            Tribromomethyls
Charged_pyridines             Aldehydes                         Triiodomethyls
Aliphatic_carbons             Formates                          t-Butyls
Aromatic_carbons              Michael_acceptors                 Neutral_imidazoles
Amide_hydrogens               beta-Heterosubstituted_carbonyls  Neutral_pyridines
Amine_or_amide_hydrogens      Peroxides                         Isothiocyanates
N-Pyrrole_H                   R-S-O-R                           Isocyanates
Imines_hydrogens              Diazos                            Isonitriles
Heteroaromatic_atoms          R-N-S-R                           Diazoniums
Divalent_oxygens              Disulfides                        Carbodiimides
Aromatic_basic_nitrogens      Guanidines                        Azides
Catch_for_uncharged_guanine_H Amidines                          Phosphonyl_halides
Neutral_sulfones              Charged_sulfonamides              Phosphinyl_halides
Neutral_sulfenes              Charged_carboxylic_acids          Alkali_metals
Neutral_carbonyls             Carboxylic_acids_or_carboxylates  Alkaline-earth_metals
Neutral_P=O-R3                Charged_phosphoric_acids          Lanthanide_series
Neutral_P(=O)2-R2             Charged_halophosphoric_acids      Actinide_series
Imines_N_donors               Charged_O-PO3                     Transition_metals
Imines_NH                     Charged_C-PO3-                    Other_metals
Carbonyls                     Charged_phosphorylamides          Toxic_nonmetals
P=O                           Charged_phosphonic_acids          Noble_gases
S=O                           Charged_phosphonamides            Silyl_enol_ethers
Nitros                        Charged_sulfuric_acids            Nitroalkanes
Ethers                        Charged_sulfenic_acids            Phosphines
Charged_N-O                   Charged_sulfonic_acids            Neutral_donor_groups
Neutral_N-O                   Charged_hydroxamic_acids          Charged_donor_groups
Aromatic_N-oxides             Aromatic_carboxylate_bioisosteres Neutral_acceptor_groups
Neutral_NR3-O                 Hydroxamates                      Charged_acceptor_groups
Neutral_halophosphoric_acids  Acetylhydrazides                  Donor_groups
Alcohols                      Charged_tetrazoles                Acceptor_groups
Thiols                        Charged_alkylthiols               Metals
Carbon_Thiols                 Charged_2-nitrophenols            Iron_binding_groups
Thiones                       Charged_4-nitrophenols            Reactive_groups
Tertiary_amines_or_amides     Charged_3,5-nitrophenols

Input Ports

Molecules in either SD or Maestro format

Output Ports

Output Molecules in Maestro format
Non-matching ligands in Maestro format


Log output of Ligfilter
Log output of Ligfilter




You want to see the source code for this node? Click the following button and we’ll use our super-powers to find it for you.