PatternQuery:Use Cases

In this section you can find several biologically relevant examples of different queries.


Find all post-translational modified aminoacids

  • i.e. Those incorporated in the protein backbone and not hetero atoms
    Filter(lambda m: m.Count(HetResidues()) == 0)
This query queries all the non-standard amino acids for their presence among Hetatom entries. Equivalently:
    Filter(lambda m: m.Contains(HetResidues()).Not())

Find all heteroatoms, which are not covalently bonded to the protein structure

  • Takes all the heteroatoms and queries them for being connected to any amino acid of a given protein
    Filter(lambda m: m.IsNotConnectedTo(AminoAcids()))

Identify Zinc fingers

  • There is a variety of different zinc fingers based on the surrounding residues, in our example we will focus on those comprising two zinc and two his residues (Cys2His2).
    Filter(lambda m: 
      (m.Count(Residues("His")) == 2) & (m.Count(Residues("Cys")) == 2))

At first the zinc atoms are selected together with their bonded residues. Additionally, these patterns are filtered according to the content of their amino acids.

Identify all the residues, which contain a sugar ring

  • This task can be decomposed to two individual subtasks, since sugars contain either pentose or furanose ring. Pentose ring contains 4 carbon and an oxygen atom. Similarly, furanose ring is composed of 5 carbon atoms and an oxygen atom.
Or(Rings(4 * ["C"] + ["O"]).ConnectedResidues(0), 
   Rings(5 * ["C"] + ["O"]).ConnectedResidues(0))
By specifying the Ring() queries, we select only the ring part of the molecule. By extending the Ring() query with
only the residue which includes this ring is selected. Last but not least we can join both queries with
in order to merge results.

Identify all binding sites of PA-IIL lectin in different organisms

  • Binding sites of this type of lectin comprise of two calcium atoms close to each other and a binded sugar residue.
Near(4, Atoms("Ca"), Atoms("Ca"))
  .Filter(lambda l:
    l.Count(Or(Rings(5 * ["C"] + ["O"]), Rings(4 * ["C"] + ["O"]))) > 0)
  .Filter(lambda l: l.Count(Atoms("P")) == 0)
At first we select all the pairs of calcium atoms, if they are in a vicinity of 4Å and less by
Near(4, Atoms("Ca"), Atoms("Ca"))
Subsequently all the bonded residues are checked if they contain either pyranose or furanose ring. only the patterns containing either pentose
(Rings(5 * ["C"] + ["O"]))
or furanose
(Rings(4 * ["C"] + ["O"]))
are returned. Since a sugar moiety is an integral part of nucleotides, there is a final simple check, assuring, that no patterns containing phosphorus, i.e. nucleotide are retained.