Tailor : Descriptions

Tailor (https://github.com/gilleain/tailor) is a project that grew out of my attempts to search for catmats niches with Prof. Milner-White. The goal of the project was to allow users to define protein structural patterns (called 'descriptions') along with a set of associated measures. More on measures later, but first what is a description?

Here is a very simple example:

The lines don't have arrowheads, but this is implicitly a tree/DAG rather than a graph. There is a root ProteinDescription and the leaves are AtomDescriptions - the DistanceCondition is referencing the two atoms. Basically, this just defines a pattern of two amino acids (GLY, ALA) with a distance of less than 3Å between the N and O atoms.

There are still a lot of details to be worked out here. Can the groups be separated along the chain? If they can, should that require the description to be explicit as to the relationship between sibling nodes? How do we define any number of matches (as with a helix, or strand)?

After some messing about with some ideas from regular expressions, I've abandoned for now the idea of having metacharacters like ".*" or ".+" as it would be hellishly difficult to match. Consider this description:

If you wanted to have the middle two groups repeated any number of times - the equivalent of "A.*G" as a sequence regular expression - how would that work? You would have to test the torsion condition for any number of repeated groups, but that requires the 'capping' residues to be present.

In any case, the code is slowly being revived - with better tests! - and hopefully should be more usable in the New Year...