Search Filter Examples

Search filter examples (search context)

The examples are divided into two groups:

Structure based calculations (plugin calculations)

Functions

Structure based calculations (plugin calculations)

Plugin references provide access to ChemAxon's calculator plugins. These calculations equip our expressions with chemical meaning.

  1. Filter hits by requiring that the partial charge on target atom matching query map 1 should be positive:

    charge(hm(1)) > 0
  2. The same with taking the physiological microspecies of the target at pH 7.4:

    charge(hm(1), "7.4") > 0
  3. Checking whether the partial charge on target atom matching query map 1 is greater than or equal to this charge value in the physiological microspecies at pH 7.4:

    charge(hm(1)) > charge(hm(1), "7.4")
  4. The basic pKa value on target atom matching query map 3 should be greater than 8.0:

    pka(hm(3) "basic") > 8.0
  5. The strongest acidic pKa value of the target should be less than 0.5:

    pka("acidic", "1") < 0.5

    Note that by default the expression refers to the target. Write query() to refer to the query:

    pka(query(), "acidic", "1") < 0.5
  6. The logP value of the query should be greater than that of the target:

    logp(query()) > logp()
  7. The logD value at pH=7.4 of the target should be less than the logD value at pH=3.4:

    logd("7.4") < logd("3.4")

    Note that in logD calculation the pH value should be enclosed in quotation marks.

  8. Check the difference between logD values of the target at two different pHs:

    logd("7.4") - logd("3.8") > 0.5
  9. Require a sufficiently large target mass as well as a positive charge value at the target atom matching query map 1:

    (mass() > 500) && (charge(hm(1)) > 0)

Functions

There are different type of functions provided by ChemAxon:

  1. general purpose functions: simple array utility functions, such as minimum, maximum, sum or number of array elements and an array element sorter function

  2. atomic functions: functions referring to an input atom, such as the atom property query function of which queries atom properties (e.g. hydrogen count) or the containment function that checks whether an atom index is contained in an atom index array

  3. evaluator functions: functions containing an inner expression string as parameter - evaluate this expression for each atom in an atom context, examples include a filtering function that takes a boolean expression and returns atoms satisfying it and min-max functions which evaluate the inner expression for all atoms in the context, return the minimum or maximum value or the corresponding atom index.

Examples are:

  1. The minimum of the partial charge values on target atoms matching maps 2, 3 and 4 should be negative, that is there should be at least one negative among these charge values:

    min(charge(hm(2)), charge(hm(3)), charge(hm(4))) < 0
  2. The hydrogen counts on target atom matching map 1 and on target atom matching map 2 should be at least 1:

    (hcount(hm(1)) >= 1) && (hcount(hm(2)) >= 1)
  3. The minimum of the partial charge values on target atoms matching maps 2, 3 and 4 should be negative, that is there should be at least one negative among these charge values:

    min(charge(hm(2)), charge(hm(3)), charge(hm(4))) < 0
  4. The hydrogen counts on target atom matching map 1 and on target atom matching map 2 should be at least 1:

    (hcount(hm(1)) >= 1) && (hcount(hm(2)) >= 1)
  5. The valence of target atom matching map 1 or map 2 should be at least 1:

    (valence(hm(1)) >= 1) || (valence(hm(2)) >= 1)
  6. The number of atoms with positive partial charge in the target should be at least that in the query:

    count(filter("charge() > 0")) >= count(filter(query()"charge() > 0"))
  7. The minimum acidic pKa value on hetero atoms with a single hydrogen in the target should be less than 0.75, that is, there should be at least one hetero atom with a single hydrogen with acidic pKa less than 0.75:

    min(pka(filter("match('[!#6!#1;H1]')"), "acidic")) < 0.75
  8. Testing whether the partial charge on the atom with the strongest basic pKa value exceeds the partial charge on the atom with the second strongest basic pKavalue in the target:

    x = maxAtom("pka('basic')", 2);
    charge(x[0]) > charge(x[1])

    Note that in the current version the above expression cannot be evaluated if there are less than two basic pKa values in the molecule.

  9. Checking whether there is a sufficiently large difference between the two strongest basic pKa values among atoms with positive charge in the target and the query:

    x = max(pka("basic", query(), filter(query(), "charge() > 0")));
    y = max(pka("basic", filter("charge() > 0")));
    (x - y > 1.5) || (y - x > 1.5)
  10. Dissimilarity between the target and query using pharmacophore fingerprint as molecular descriptor with Tanimoto (default) metric should be sufficiently small:

    dissimilarity("PF", target(), query()) < 0.6

    Note, that the target() can be omitted as in the above examples:

    dissimilarity("PF", query()) < 0.6
  11. The same using Euclidean metric:

    dissimilarity("PF:Euclidean", target(), query()) < 0.6