Filtering Structures by Property: ligfilter
The ligfilter utility filters a structure file based on properties and descriptors. Despite the name, ligfilter can be used to filter protein structures as well as ligand structures. It can filter on any Maestro property, a set of predefined feature counts, or counts of SMARTS patterns for functional groups. The output file reports the criteria that a structures failed to meet when it does not pass the filter.
The command syntax for ligfilter is:
ligfilter [options] input-file
ligfilter [-h] [-v]
where input-file is the file of structures to be filtered, in Maestro or SD format, uncompressed or compressed. For information on the options, see ligfilter Command Help.
The syntax of a filter criterion is as follows:
name [ op value [ {AND|OR} op2 value2 ... ]]
Here, name is the full Maestro name of a property or descriptor, e.g. r_qp_volume or i_qp_n_stars. The conditional operator op must be one of the following:
|
|
|
|
|
|
|
and it must be surrounded by white space. If a criterion is simply name, then the named property is required to exist, but it may have any value. If the value for a string property contains spaces, the value must be enclosed in quotes.
Multiple conditions can be specified with the use of the AND and OR operators. For example, to specify that the property r_user_minima can have the values 0, 3, and 6, the filter criterion would be
r_user_minima = 0 OR = 3 OR = 6
If filter criteria are supplied in an input filter file, there must be one criterion per line. Lines that start with # are treated as comments. Blank lines are ignored.
The properties and feature counts that can be used are as follows:
|
Molecular_formula |
Num_heavy_atoms |
Num_rings |
|
Molecular_weight |
Num_heteroaromatic_rings |
Num_rotatable_bonds |
|
Num_aliphatic_rings |
Num_molecules |
Percent_helix |
|
Num_aromatic_rings |
Num_negative_atoms |
Percent_loop |
|
Num_atoms |
Num_positive_atoms |
Percent_strand |
|
Num_chiral_centers |
Num_residues |
Total_charge |
The list of functional groups that are defined by SMARTS patterns is extensive, and can be found in the following file:
$SCHRODINGER/mmshare-vversion/data/ligfilter_definitions.lff
Each of the DEFINE lines in this file defines a functional group. The name of the group, which you can use in a filter criterion, is the next text field after the word DEFINE. You can copy this file and modify it to customize the definitions. When ligfilter is run, it looks for this file in the following locations, in the order given:
- The current working directory
- The Schrödinger user resources directory
- The installation data directory,
$SCHRODINGER/mmshare-vversion/data