PatternQuery:Language Reference: Difference between revisions
No edit summary |
No edit summary |
||
Line 16: | Line 16: | ||
''Basic value types.'' | ''Basic value types.'' | ||
=== Bool === | === Bool === | ||
; | ;Examples | ||
: <code>True</code> | : <code>True</code> | ||
: ''True value.'' | :: ''True value.'' | ||
---- | ---- | ||
=== Integer === | === Integer === | ||
; | ;Examples | ||
: <code>42</code> | : <code>42</code> | ||
: ''The ultimate answer.'' | :: ''The ultimate answer.'' | ||
---- | ---- | ||
=== Real === | === Real === | ||
; | ;Examples | ||
: <code>12.87</code> | : <code>12.87</code> | ||
: ''Real number.'' | :: ''Real number.'' | ||
---- | ---- | ||
=== String === | === String === | ||
; | ;Examples | ||
: <code>"aBcD"</code> | : <code>"aBcD"</code> | ||
: ''String.'' | :: ''String.'' | ||
---- | ---- | ||
=== Symbol === | === Symbol === | ||
<br/> | <br/> | ||
== Basic Language Syntax == | == Basic Language Syntax == | ||
Line 45: | Line 42: | ||
<code>Apply -> ?</code><br/> | <code>Apply -> ?</code><br/> | ||
''Application of a function to its arguments. (internal)''<br/> | ''Application of a function to its arguments. (internal)''<br/> | ||
---- | ---- | ||
=== Assign (=) === | === Assign (=) === | ||
<code>Assign -> ?</code><br/> | <code>Assign -> ?</code><br/> | ||
''This symbol is used for assigning optional parameters of functions. (internal)''<br/> | ''This symbol is used for assigning optional parameters of functions. (internal)''<br/> | ||
; | ;Examples | ||
: <code>NotAminoAcids(NoWaters = 1)</code> | : <code>NotAminoAcids(NoWaters = 1)</code> | ||
: ''All residues that are not amino acids or waters.'' | :: ''All residues that are not amino acids or waters.'' | ||
---- | ---- | ||
=== Lambda === | === Lambda === | ||
<code>Lambda -> 'a->'b</code><br/> | <code>Lambda -> 'a->'b</code><br/> | ||
''An anonymous (nameless) function.''<br/> | ''An anonymous (nameless) function.''<br/> | ||
; | ;Examples | ||
: <code>lambda m: Residues("HIS").Count(m)</code> | : <code>lambda m: Residues("HIS").Count(m)</code> | ||
: ''A function that counts number of HIS residues in Motive m.'' | :: ''A function that counts number of HIS residues in Motive m.'' | ||
---- | ---- | ||
=== List === | === List === | ||
Line 68: | Line 62: | ||
;Arguments | ;Arguments | ||
: elements: ?+ - ''Elements.'' | : elements: ?+ - ''Elements.'' | ||
; | ;Examples | ||
: <code>[1, "a", True, [3, 4]]</code> | : <code>[1, "a", True, [3, 4]]</code> | ||
: ''Create a list with 4 elements.'' | :: ''Create a list with 4 elements.'' | ||
---- | ---- | ||
=== Repeat (*) === | === Repeat (*) === | ||
Line 78: | Line 72: | ||
: x: ? - ''Expression to be repeated.'' | : x: ? - ''Expression to be repeated.'' | ||
: n: Integer - ''Count.'' | : n: Integer - ''Count.'' | ||
; | ;Examples | ||
: <code>Rings(5 * ["C"] + ["O"])</code> | : <code>Rings(5 * ["C"] + ["O"])</code> | ||
: ''Equivalent to <code>Rings("C","C","C","C","C","O")</code>.'' | :: ''Equivalent to <code>Rings("C","C","C","C","C","O")</code>.'' | ||
---- | ---- | ||
=== Sequence === | === Sequence === | ||
Line 87: | Line 81: | ||
;Arguments | ;Arguments | ||
: xs: ?* - ''Values.'' | : xs: ?* - ''Values.'' | ||
---- | ---- | ||
=== Tuple === | === Tuple === | ||
<code>Tuple -> ?</code><br/> | <code>Tuple -> ?</code><br/> | ||
''A tuple of elements. Tuples serve as arguments for functions. Internal use only. (internal)''<br/> | ''A tuple of elements. Tuples serve as arguments for functions. Internal use only. (internal)''<br/> | ||
<br/> | <br/> | ||
== Value Functions == | == Value Functions == | ||
Line 105: | Line 93: | ||
;Arguments | ;Arguments | ||
: x: Number - ''Argument.'' | : x: Number - ''Argument.'' | ||
; | ;Examples | ||
: <code>Abs(x)</code> | : <code>Abs(x)</code> | ||
: ''Evaluates the expression.'' | :: ''Evaluates the expression.'' | ||
---- | ---- | ||
=== Divide (/) === | === Divide (/) === | ||
Line 115: | Line 103: | ||
: x: Number - ''Left argument.'' | : x: Number - ''Left argument.'' | ||
: y: Number - ''Right argument.'' | : y: Number - ''Right argument.'' | ||
; | ;Examples | ||
: <code>x / y</code> | : <code>x / y</code> | ||
: ''Evaluates the expression.'' | :: ''Evaluates the expression.'' | ||
---- | ---- | ||
=== Equal (==) === | === Equal (==) === | ||
Line 125: | Line 113: | ||
: x: Value - ''Left argument.'' | : x: Value - ''Left argument.'' | ||
: y: Value - ''Right argument.'' | : y: Value - ''Right argument.'' | ||
; | ;Examples | ||
: <code>x == y</code> | : <code>x == y</code> | ||
: ''Evaluates to True or False based on the value of x and y.'' | :: ''Evaluates to True or False based on the value of x and y.'' | ||
---- | ---- | ||
=== Greater (>) === | === Greater (>) === | ||
Line 135: | Line 123: | ||
: x: Number - ''Left argument.'' | : x: Number - ''Left argument.'' | ||
: y: Number - ''Right argument.'' | : y: Number - ''Right argument.'' | ||
; | ;Examples | ||
: <code>x > y</code> | : <code>x > y</code> | ||
: ''Evaluates to True or False based on the value of x and y.'' | :: ''Evaluates to True or False based on the value of x and y.'' | ||
---- | ---- | ||
=== GreaterEqual (>=) === | === GreaterEqual (>=) === | ||
Line 145: | Line 133: | ||
: x: Number - ''Left argument.'' | : x: Number - ''Left argument.'' | ||
: y: Number - ''Right argument.'' | : y: Number - ''Right argument.'' | ||
; | ;Examples | ||
: <code>x >= y</code> | : <code>x >= y</code> | ||
: ''Evaluates to True or False based on the value of x and y.'' | :: ''Evaluates to True or False based on the value of x and y.'' | ||
---- | ---- | ||
=== Less (<) === | === Less (<) === | ||
Line 155: | Line 143: | ||
: x: Number - ''Left argument.'' | : x: Number - ''Left argument.'' | ||
: y: Number - ''Right argument.'' | : y: Number - ''Right argument.'' | ||
; | ;Examples | ||
: <code>x < y</code> | : <code>x < y</code> | ||
: ''Evaluates to True or False based on the value of x and y.'' | :: ''Evaluates to True or False based on the value of x and y.'' | ||
---- | ---- | ||
=== LessEqual (<=) === | === LessEqual (<=) === | ||
Line 165: | Line 153: | ||
: x: Number - ''Left argument.'' | : x: Number - ''Left argument.'' | ||
: y: Number - ''Right argument.'' | : y: Number - ''Right argument.'' | ||
; | ;Examples | ||
: <code>x <= y</code> | : <code>x <= y</code> | ||
: ''Evaluates to True or False based on the value of x and y.'' | :: ''Evaluates to True or False based on the value of x and y.'' | ||
---- | ---- | ||
=== LogicalAnd (&) === | === LogicalAnd (&) === | ||
Line 174: | Line 162: | ||
;Arguments | ;Arguments | ||
: xs: Bool+ - ''Arguments.'' | : xs: Bool+ - ''Arguments.'' | ||
; | ;Examples | ||
: <code>x & y</code> | : <code>x & y</code> | ||
: ''Evaluates to True or False based on the values of x and y.'' | :: ''Evaluates to True or False based on the values of x and y.'' | ||
---- | ---- | ||
=== LogicalNot (!) === | === LogicalNot (!) === | ||
Line 183: | Line 171: | ||
;Arguments | ;Arguments | ||
: x: Bool - ''Argument.'' | : x: Bool - ''Argument.'' | ||
; | ;Examples | ||
: <code>!x</code> | : <code>!x</code> | ||
: ''Evaluates to True or False based on the value of x.'' | :: ''Evaluates to True or False based on the value of x.'' | ||
---- | ---- | ||
=== LogicalOr (|) === | === LogicalOr (|) === | ||
Line 192: | Line 180: | ||
;Arguments | ;Arguments | ||
: xs: Bool+ - ''Arguments.'' | : xs: Bool+ - ''Arguments.'' | ||
; | ;Examples | ||
: <code>x | y</code> | : <code>x | y</code> | ||
: ''Evaluates to True or False based on the values of x and y.'' | :: ''Evaluates to True or False based on the values of x and y.'' | ||
---- | ---- | ||
=== LogicalXor === | === LogicalXor === | ||
Line 201: | Line 189: | ||
;Arguments | ;Arguments | ||
: xs: Bool+ - ''Arguments.'' | : xs: Bool+ - ''Arguments.'' | ||
; | ;Examples | ||
: <code>LogicalXor(x, y)</code> | : <code>LogicalXor(x, y)</code> | ||
: ''Evaluates to True or False based on the values of x and y.'' | :: ''Evaluates to True or False based on the values of x and y.'' | ||
---- | ---- | ||
=== Minus (-) === | === Minus (-) === | ||
Line 210: | Line 198: | ||
;Arguments | ;Arguments | ||
: x: Number - ''Argument.'' | : x: Number - ''Argument.'' | ||
; | ;Examples | ||
: <code>-x</code> | : <code>-x</code> | ||
: ''Arithmetic negation of x.'' | :: ''Arithmetic negation of x.'' | ||
---- | ---- | ||
=== NotEqual (!=) === | === NotEqual (!=) === | ||
Line 220: | Line 208: | ||
: x: Value - ''Left argument.'' | : x: Value - ''Left argument.'' | ||
: y: Value - ''Right argument.'' | : y: Value - ''Right argument.'' | ||
; | ;Examples | ||
: <code>x != y</code> | : <code>x != y</code> | ||
: ''Evaluates to True or False based on the value of x and y.'' | :: ''Evaluates to True or False based on the value of x and y.'' | ||
---- | ---- | ||
=== Plus (+) === | === Plus (+) === | ||
Line 230: | Line 218: | ||
: x: Number - ''Left argument.'' | : x: Number - ''Left argument.'' | ||
: y: Number - ''Right argument.'' | : y: Number - ''Right argument.'' | ||
; | ;Examples | ||
: <code>x + y</code> | : <code>x + y</code> | ||
: ''Evaluates the expression.'' | :: ''Evaluates the expression.'' | ||
---- | ---- | ||
=== Power (^) === | === Power (^) === | ||
Line 240: | Line 228: | ||
: x: Number - ''Left argument.'' | : x: Number - ''Left argument.'' | ||
: y: Number - ''Right argument.'' | : y: Number - ''Right argument.'' | ||
; | ;Examples | ||
: <code>x ^ y</code> | : <code>x ^ y</code> | ||
: ''Evaluates the expression.'' | :: ''Evaluates the expression.'' | ||
---- | ---- | ||
=== Subtract (-) === | === Subtract (-) === | ||
Line 250: | Line 238: | ||
: x: Number - ''Left argument.'' | : x: Number - ''Left argument.'' | ||
: y: Number - ''Right argument.'' | : y: Number - ''Right argument.'' | ||
; | ;Examples | ||
: <code>x - y</code> | : <code>x - y</code> | ||
: ''Evaluates the expression.'' | :: ''Evaluates the expression.'' | ||
---- | ---- | ||
=== Times (*) === | === Times (*) === | ||
Line 260: | Line 248: | ||
: x: Number - ''Left argument.'' | : x: Number - ''Left argument.'' | ||
: y: Number - ''Right argument.'' | : y: Number - ''Right argument.'' | ||
; | ;Examples | ||
: <code>x * y</code> | : <code>x * y</code> | ||
: ''Evaluates the expression.'' | :: ''Evaluates the expression.'' | ||
<br/> | <br/> | ||
== Basic Query Functions == | == Basic Query Functions == | ||
Line 269: | Line 257: | ||
<code>AminoAcids -> Residues</code><br/> | <code>AminoAcids -> Residues</code><br/> | ||
''Sequence of all amino acids in a given protein.''<br/> | ''Sequence of all amino acids in a given protein.''<br/> | ||
; | ;Options | ||
: ChargeType: String = "" - ''Specify type of the charge. Allowed values: Positive,Negative,Polar,NonPolar.'' | |||
;Examples | |||
: <code>AminoAcids()</code> | : <code>AminoAcids()</code> | ||
: '' | :: ''All amino acids.'' | ||
: <code>AminoAcids(ChargeType = "Polar")</code> | |||
:: ''Amino acids with polar charge.'' | |||
---- | ---- | ||
=== AtomIdRange === | === AtomIdRange === | ||
Line 279: | Line 271: | ||
: minId: Integer - ''Minimum id.'' | : minId: Integer - ''Minimum id.'' | ||
: maxId: ?Integer - ''Maximum id. If not specified, maxId = minId.'' | : maxId: ?Integer - ''Maximum id. If not specified, maxId = minId.'' | ||
; | ;Examples | ||
: <code>AtomIdRange(152, 161)</code> | : <code>AtomIdRange(152, 161)</code> | ||
: ''Returns all atoms with id between 152 and 161 inclusive.'' | :: ''Returns all atoms with id between 152 and 161 inclusive.'' | ||
---- | ---- | ||
=== AtomNames === | === AtomNames === | ||
Line 288: | Line 280: | ||
;Arguments | ;Arguments | ||
: names: String+ - ''Allowed names.'' | : names: String+ - ''Allowed names.'' | ||
; | ;Examples | ||
: <code>AtomNames("O1","NH1")</code> | : <code>AtomNames("O1","NH1")</code> | ||
: ''Returns all atoms with names O1 or NH1.'' | :: ''Returns all atoms with names O1 or NH1.'' | ||
---- | ---- | ||
=== Atoms === | === Atoms === | ||
Line 297: | Line 289: | ||
;Arguments | ;Arguments | ||
: symbols: String* - ''Allowed element symbols.'' | : symbols: String* - ''Allowed element symbols.'' | ||
; | ;Examples | ||
: <code>Atoms("Zn","Ca")</code> | : <code>Atoms("Zn","Ca")</code> | ||
: ''Returns all atoms with element symbol Zn or Ca'' | :: ''Returns all atoms with element symbol Zn or Ca'' | ||
---- | ---- | ||
=== Named === | === Named === | ||
Line 306: | Line 298: | ||
;Arguments | ;Arguments | ||
: motives: Motives - ''Motives to name.'' | : motives: Motives - ''Motives to name.'' | ||
; | ;Examples | ||
: <code>Atoms("Zn").Named().AmbientAtoms(7)</code> | : <code>Atoms("Zn").Named().AmbientAtoms(7)</code> | ||
: ''When exported, the result files will have names in the format '[parent id]_[pseudorandom numner]_[zn atomid]'. If the Named function was not used, the name would be just '[parent id]_[pseudorandom numner]'.'' | :: ''When exported, the result files will have names in the format '[parent id]_[pseudorandom numner]_[zn atomid]'. If the Named function was not used, the name would be just '[parent id]_[pseudorandom numner]'.'' | ||
---- | ---- | ||
=== NotAminoAcids === | === NotAminoAcids === | ||
Line 315: | Line 307: | ||
;Options | ;Options | ||
: NoWaters: Bool = True - ''Ignore water residues such as HOH.'' | : NoWaters: Bool = True - ''Ignore water residues such as HOH.'' | ||
; | ;Examples | ||
: <code>NotAminoAcids()</code> | : <code>NotAminoAcids()</code> | ||
: ''Returns all residues that are not amino acids.'' | :: ''Returns all residues that are not amino acids.'' | ||
---- | ---- | ||
=== NotAtomNames === | === NotAtomNames === | ||
Line 324: | Line 316: | ||
;Arguments | ;Arguments | ||
: names: String+ - ''Forbidden names.'' | : names: String+ - ''Forbidden names.'' | ||
; | ;Examples | ||
: <code>NotAtomNames("O4")</code> | : <code>NotAtomNames("O4")</code> | ||
: ''Returns all atoms that are not called O4.'' | :: ''Returns all atoms that are not called O4.'' | ||
---- | ---- | ||
=== NotAtoms === | === NotAtoms === | ||
Line 333: | Line 325: | ||
;Arguments | ;Arguments | ||
: symbols: String+ - ''Forbidden element symbols.'' | : symbols: String+ - ''Forbidden element symbols.'' | ||
; | ;Examples | ||
: <code>NotAtoms("O")</code> | : <code>NotAtoms("O")</code> | ||
: ''Returns all atoms that are not C.'' | :: ''Returns all atoms that are not C.'' | ||
---- | ---- | ||
=== NotResidues === | === NotResidues === | ||
Line 342: | Line 334: | ||
;Arguments | ;Arguments | ||
: names: Value+ - ''Forbidden residue names.'' | : names: Value+ - ''Forbidden residue names.'' | ||
; | ;Examples | ||
: <code>NotResidues("THR","CYS")</code> | : <code>NotResidues("THR","CYS")</code> | ||
: ''Returns all residues that are not THR or CYS.'' | :: ''Returns all residues that are not THR or CYS.'' | ||
---- | ---- | ||
=== RegularMotives === | === RegularMotives === | ||
Line 351: | Line 343: | ||
;Arguments | ;Arguments | ||
: regex: String - ''Regular expression on one letter abbreviations of amino acids.'' | : regex: String - ''Regular expression on one letter abbreviations of amino acids.'' | ||
; | ;Examples | ||
: <code>RegularMotives("RGD")</code> | : <code>RegularMotives("RGD")</code> | ||
: ''Finds all RGD motives.'' | :: ''Finds all RGD motives.'' | ||
---- | ---- | ||
=== ResidueIdRange === | === ResidueIdRange === | ||
Line 362: | Line 354: | ||
: min: Integer - ''Minimum sequence number.'' | : min: Integer - ''Minimum sequence number.'' | ||
: max: ?Integer - ''Maximum sequence number. If not specified, max = min.'' | : max: ?Integer - ''Maximum sequence number. If not specified, max = min.'' | ||
; | ;Examples | ||
: <code>ResidueIdRange("A", 161, 165)</code> | : <code>ResidueIdRange("A", 161, 165)</code> | ||
: ''Returns all residues on chain A with seq. number between 161 and 165 inclusive.'' | :: ''Returns all residues on chain A with seq. number between 161 and 165 inclusive.'' | ||
---- | ---- | ||
=== Residues === | === Residues === | ||
Line 371: | Line 363: | ||
;Arguments | ;Arguments | ||
: names: Value* - ''Allowed residue names.'' | : names: Value* - ''Allowed residue names.'' | ||
; | ;Examples | ||
: <code>Residues("HIS", "CYS")</code> | : <code>Residues("HIS", "CYS")</code> | ||
: ''Returns all HIS or CYS residues.'' | :: ''Returns all HIS or CYS residues.'' | ||
---- | ---- | ||
=== RingAtoms === | === RingAtoms === | ||
Line 381: | Line 373: | ||
: atom: Atoms - ''Atom types.'' | : atom: Atoms - ''Atom types.'' | ||
: ring: ?Rings - ''Specific ring.'' | : ring: ?Rings - ''Specific ring.'' | ||
; | ;Examples | ||
: <code>OnRing(Atoms("C"), Rings(4 * ["C"] + ["O"]))</code> | : <code>OnRing(Atoms("C"), Rings(4 * ["C"] + ["O"]))</code> | ||
: ''Returns all C atoms on a ring with 4C and O.'' | :: ''Returns all C atoms on a ring with 4C and O.'' | ||
---- | ---- | ||
=== Rings === | === Rings === | ||
Line 390: | Line 382: | ||
;Arguments | ;Arguments | ||
: atoms: Value* - ''Ring atoms.'' | : atoms: Value* - ''Ring atoms.'' | ||
; | ;Examples | ||
: <code>Rings(5 * ["C"] + ["O"])</code> | : <code>Rings(5 * ["C"] + ["O"])</code> | ||
: ''Returns all rings with 5C and 1O atoms.'' | :: ''Returns all rings with 5C and 1O atoms.'' | ||
<br/> | <br/> | ||
== Advanced Query Functions == | == Advanced Query Functions == | ||
Line 402: | Line 394: | ||
: where: Motive - ''Where to count it.'' | : where: Motive - ''Where to count it.'' | ||
: what: Motives - ''What motive to count.'' | : what: Motives - ''What motive to count.'' | ||
; | ;Examples | ||
: <code>m.Count(Residues("HIS"))</code> | : <code>m.Count(Residues("HIS"))</code> | ||
: ''Returns the count of HIS residues in the motive m.'' | :: ''Returns the count of HIS residues in the motive m.'' | ||
---- | ---- | ||
=== Current === | === Current === | ||
<code>Current -> Motive</code><br/> | <code>Current -> Motive</code><br/> | ||
''A variable that is assigned by the application environment.''<br/> | ''A variable that is assigned by the application environment.''<br/> | ||
; | ;Examples | ||
: <code>AtomSimilarity(Current(), Motive("model"))</code> | : <code>AtomSimilarity(Current(), Motive("model"))</code> | ||
: ''Returns the atom similarity of the current motive and the model.'' | :: ''Returns the atom similarity of the current motive and the model.'' | ||
---- | ---- | ||
=== Filter === | === Filter === | ||
Line 419: | Line 411: | ||
: motives: Motives - ''Motives to filter.'' | : motives: Motives - ''Motives to filter.'' | ||
: filter: Motive->Bool - ''Filter predicate.'' | : filter: Motive->Bool - ''Filter predicate.'' | ||
; | ;Examples | ||
: <code>Residues().Filter(lambda m: m.Count(Atoms("C")) >= 3)</code> | : <code>Residues().Filter(lambda m: m.Count(Atoms("C")) >= 3)</code> | ||
: ''Returns all residues that contain at least 3 C atoms.'' | :: ''Returns all residues that contain at least 3 C atoms.'' | ||
---- | ---- | ||
=== Find === | === Find === | ||
Line 429: | Line 421: | ||
: source: Motive - ''Where to look.'' | : source: Motive - ''Where to look.'' | ||
: motives: Motives - ''Motives to find.'' | : motives: Motives - ''Motives to find.'' | ||
; | ;Examples | ||
: <code>AtomSimilarity(Current().Find(NotAtoms("N")).ToMotive(), Motive("model").Find(NotAtoms("N")).ToMotive())</code> | : <code>AtomSimilarity(Current().Find(NotAtoms("N")).ToMotive(), Motive("model").Find(NotAtoms("N")).ToMotive())</code> | ||
: ''Computes the atom similarity of the 'current' and 'model' motives, but ignores N atoms.'' | :: ''Computes the atom similarity of the 'current' and 'model' motives, but ignores N atoms.'' | ||
---- | ---- | ||
=== Inside === | === Inside === | ||
Line 439: | Line 431: | ||
: motives: Motives - ''Motives to find.'' | : motives: Motives - ''Motives to find.'' | ||
: where: Motives - ''Where to find them.'' | : where: Motives - ''Where to find them.'' | ||
; | ;Examples | ||
: <code>Atoms("C").Inside(Residues("HIS"))</code> | : <code>Atoms("C").Inside(Residues("HIS"))</code> | ||
: ''Returns all C atoms on HIS residues.'' | :: ''Returns all C atoms on HIS residues.'' | ||
---- | ---- | ||
=== Motive === | === Motive === | ||
Line 448: | Line 440: | ||
;Arguments | ;Arguments | ||
: structureName: String - ''Name of a structure.'' | : structureName: String - ''Name of a structure.'' | ||
; | ;Examples | ||
: <code>Motive("1tqn_12")</code> | : <code>Motive("1tqn_12")</code> | ||
: ''Returns the structure '1tqn_12' represented as a motive.'' | :: ''Returns the structure '1tqn_12' represented as a motive.'' | ||
---- | ---- | ||
=== Or === | === Or === | ||
Line 457: | Line 449: | ||
;Arguments | ;Arguments | ||
: motives: Motives+ - ''Motives to merge.'' | : motives: Motives+ - ''Motives to merge.'' | ||
; | ;Examples | ||
: <code>Or(Atoms("Zn").ConnectedResidues(1), Rings())</code> | : <code>Or(Atoms("Zn").ConnectedResidues(1), Rings())</code> | ||
: ''Finds all zincs and their connected residues or rings.'' | :: ''Finds all zincs and their connected residues or rings.'' | ||
---- | ---- | ||
=== SelectMany === | === SelectMany === | ||
Line 467: | Line 459: | ||
: motives: Motives - ''Motives to project.'' | : motives: Motives - ''Motives to project.'' | ||
: selector: Motive->Motives - ''The selector.'' | : selector: Motive->Motives - ''The selector.'' | ||
; | ;Examples | ||
: <code>Residues("HIS").SelectMany(lambda m: m.Find(Atoms("C")))</code> | : <code>Residues("HIS").SelectMany(lambda m: m.Find(Atoms("C")))</code> | ||
: ''Returns all C atoms on HIS residues.'' | :: ''Returns all C atoms on HIS residues.'' | ||
---- | ---- | ||
=== ToAtoms === | === ToAtoms === | ||
Line 476: | Line 468: | ||
;Arguments | ;Arguments | ||
: motives: Motives - ''Motives to split.'' | : motives: Motives - ''Motives to split.'' | ||
; | ;Examples | ||
: <code>Residues("HIS").ToAtoms()</code> | : <code>Residues("HIS").ToAtoms()</code> | ||
: ''Returns all atoms on HIS residues one by one.'' | :: ''Returns all atoms on HIS residues one by one.'' | ||
---- | ---- | ||
=== ToMotive === | === ToMotive === | ||
Line 485: | Line 477: | ||
;Arguments | ;Arguments | ||
: motives: Motives - ''Motives to convert.'' | : motives: Motives - ''Motives to convert.'' | ||
; | ;Examples | ||
: <code>ToMotive(Residues("HIS"))</code> | : <code>ToMotive(Residues("HIS"))</code> | ||
: ''Returns a single motive that contains all HIS residues.'' | :: ''Returns a single motive that contains all HIS residues.'' | ||
---- | ---- | ||
=== ToResidues === | === ToResidues === | ||
Line 494: | Line 486: | ||
;Arguments | ;Arguments | ||
: motives: Motives - ''Motives to split.'' | : motives: Motives - ''Motives to split.'' | ||
; | ;Examples | ||
: <code>ToResidues(Atoms("C"))</code> | : <code>ToResidues(Atoms("C"))</code> | ||
: ''Returns all C atoms grouped by residues.'' | :: ''Returns all C atoms grouped by residues.'' | ||
---- | ---- | ||
=== Union === | === Union === | ||
Line 503: | Line 495: | ||
;Arguments | ;Arguments | ||
: motives: Motives - ''Motives to merge.'' | : motives: Motives - ''Motives to merge.'' | ||
; | ;Examples | ||
: <code>Rings().Union()</code> | : <code>Rings().Union()</code> | ||
: ''Creates a single motive that contains all rings.'' | :: ''Creates a single motive that contains all rings.'' | ||
<br/> | <br/> | ||
== Topology Functions == | == Topology Functions == | ||
Line 517: | Line 509: | ||
;Options | ;Options | ||
: YieldNamedDuplicates: Bool = False - ''Yield duplicate motifs if they have a different name.'' | : YieldNamedDuplicates: Bool = False - ''Yield duplicate motifs if they have a different name.'' | ||
; | ;Examples | ||
: <code>Residues("MAN").ConnectedAtoms(2)</code> | : <code>Residues("MAN").ConnectedAtoms(2)</code> | ||
: ''Finds all MAN residues and then adds two connected levels of atoms to them.'' | :: ''Finds all MAN residues and then adds two connected levels of atoms to them.'' | ||
---- | ---- | ||
=== ConnectedResidues === | === ConnectedResidues === | ||
Line 529: | Line 521: | ||
;Options | ;Options | ||
: YieldNamedDuplicates: Bool = False - ''Yield duplicate motifs if they have a different name.'' | : YieldNamedDuplicates: Bool = False - ''Yield duplicate motifs if they have a different name.'' | ||
; | ;Examples | ||
: <code>Atoms("Zn").ConnectedResidues(1))</code> | : <code>Atoms("Zn").ConnectedResidues(1))</code> | ||
: ''Finds all Zn atoms and adds all residues that are connected to them.'' | :: ''Finds all Zn atoms and adds all residues that are connected to them.'' | ||
---- | ---- | ||
=== IsConnectedTo === | === IsConnectedTo === | ||
Line 539: | Line 531: | ||
: current: Motive - ''A motive to test.'' | : current: Motive - ''A motive to test.'' | ||
: motive: Motives - ''Motive sequence to test against.'' | : motive: Motives - ''Motive sequence to test against.'' | ||
; | ;Examples | ||
: <code>Atoms().Filter(lambda a: a.IsConnectedTo(Rings()))</code> | : <code>Atoms().Filter(lambda a: a.IsConnectedTo(Rings()))</code> | ||
: ''Finds all atoms that are connected to a ring they do not belong to.'' | :: ''Finds all atoms that are connected to a ring they do not belong to.'' | ||
---- | ---- | ||
=== IsNotConnectedTo === | === IsNotConnectedTo === | ||
Line 549: | Line 541: | ||
: current: Motive - ''A motive to test.'' | : current: Motive - ''A motive to test.'' | ||
: motive: Motives - ''Motive sequence to test against.'' | : motive: Motives - ''Motive sequence to test against.'' | ||
; | ;Examples | ||
: <code>Residues().Filter(lambda r: r.IsNotConnectedTo(Atoms("Ca")))</code> | : <code>Residues().Filter(lambda r: r.IsNotConnectedTo(Atoms("Ca")))</code> | ||
: ''Finds all residues that are not connected to Ca atoms. The residue itself can still contain Ca atoms.'' | :: ''Finds all residues that are not connected to Ca atoms. The residue itself can still contain Ca atoms.'' | ||
<br/> | <br/> | ||
== Geometry Functions == | == Geometry Functions == | ||
Line 565: | Line 557: | ||
: NoWaters: Bool = True - ''Ignore water residues such as HOH.'' | : NoWaters: Bool = True - ''Ignore water residues such as HOH.'' | ||
: YieldNamedDuplicates: Bool = False - ''Yield duplicate motifs if they have a different name.'' | : YieldNamedDuplicates: Bool = False - ''Yield duplicate motifs if they have a different name.'' | ||
; | ;Examples | ||
: <code>Atoms("Fe").AmbientAtoms(4)</code> | : <code>Atoms("Fe").AmbientAtoms(4)</code> | ||
: ''Finds Fe atoms and all atoms within 4 (angstroms) from each of them.'' | :: ''Finds Fe atoms and all atoms within 4 (angstroms) from each of them.'' | ||
---- | ---- | ||
=== AmbientResidues === | === AmbientResidues === | ||
Line 579: | Line 571: | ||
: NoWaters: Bool = True - ''Ignore water residues such as HOH.'' | : NoWaters: Bool = True - ''Ignore water residues such as HOH.'' | ||
: YieldNamedDuplicates: Bool = False - ''Yield duplicate motifs if they have a different name.'' | : YieldNamedDuplicates: Bool = False - ''Yield duplicate motifs if they have a different name.'' | ||
; | ;Examples | ||
: <code>Rings(6 * ["C"]).AmbientResidues(4)</code> | : <code>Rings(6 * ["C"]).AmbientResidues(4)</code> | ||
: ''Finds rings with 6C atoms and all residues within 4 (angstroms) from each of them.'' | :: ''Finds rings with 6C atoms and all residues within 4 (angstroms) from each of them.'' | ||
---- | ---- | ||
=== Cluster === | === Cluster === | ||
Line 589: | Line 581: | ||
: r: Number - ''Maximum distance between two motives in the cluster.'' | : r: Number - ''Maximum distance between two motives in the cluster.'' | ||
: motives: Motives+ - ''Motives to cluster.'' | : motives: Motives+ - ''Motives to cluster.'' | ||
; | ;Examples | ||
: <code>Cluster(4, Atoms("Ca"), Rings(5 * ["C"] + ["O"]))</code> | : <code>Cluster(4, Atoms("Ca"), Rings(5 * ["C"] + ["O"]))</code> | ||
: ''Finds all instance of one or more rings with 5C and O atoms and one or more Ca atoms that are closer than 4 (angstroms).'' | :: ''Finds all instance of one or more rings with 5C and O atoms and one or more Ca atoms that are closer than 4 (angstroms).'' | ||
---- | ---- | ||
=== Filled === | === Filled === | ||
Line 601: | Line 593: | ||
: NoWaters: Bool = True - ''Ignore water residues such as HOH.'' | : NoWaters: Bool = True - ''Ignore water residues such as HOH.'' | ||
: RadiusFactor: Number = 0.75 - ''Circumsphere radius factor.'' | : RadiusFactor: Number = 0.75 - ''Circumsphere radius factor.'' | ||
; | ;Examples | ||
: <code>Cluster(4, Residues("HIS")).Filled(RadiusFactor = 0.75)</code> | : <code>Cluster(4, Residues("HIS")).Filled(RadiusFactor = 0.75)</code> | ||
: ''Finds clusters of HIS residues and all atoms within the circumsphere.'' | :: ''Finds clusters of HIS residues and all atoms within the circumsphere.'' | ||
---- | ---- | ||
=== Near === | === Near === | ||
Line 611: | Line 603: | ||
: r: Number - ''Maximum distance between two sub-motives in the motive.'' | : r: Number - ''Maximum distance between two sub-motives in the motive.'' | ||
: motives: Motives+ - ''Motives to 'cluster'.'' | : motives: Motives+ - ''Motives to 'cluster'.'' | ||
; | ;Examples | ||
: <code>Near(4, Many(2, Atoms("Ca")), Rings(5 * ["C"] + ["O"]))</code> | : <code>Near(4, Many(2, Atoms("Ca")), Rings(5 * ["C"] + ["O"]))</code> | ||
: ''Finds all instance of a single ring with 5C and O atoms and two Ca atoms that are closer than 4 (angstroms).'' | :: ''Finds all instance of a single ring with 5C and O atoms and two Ca atoms that are closer than 4 (angstroms).'' | ||
---- | ---- | ||
=== NearestDistanceTo === | === NearestDistanceTo === | ||
Line 621: | Line 613: | ||
: current: Motive - ''A motive to test.'' | : current: Motive - ''A motive to test.'' | ||
: motive: Motives - ''Motive sequence to test against.'' | : motive: Motives - ''Motive sequence to test against.'' | ||
; | ;Examples | ||
: <code>Atoms().Filter(lambda m: m.NearestDistanceTo(Residues("ASP")) >= 5)</code> | : <code>Atoms().Filter(lambda m: m.NearestDistanceTo(Residues("ASP")) >= 5)</code> | ||
: ''Finds all atoms that are at least 5 (angstroms) away from any ASP residue.'' | :: ''Finds all atoms that are at least 5 (angstroms) away from any ASP residue.'' | ||
<br/> | <br/> | ||
== Miscellaneous Functions == | == Miscellaneous Functions == | ||
Line 633: | Line 625: | ||
: atomMotive: Motive - ''Single atom motive.'' | : atomMotive: Motive - ''Single atom motive.'' | ||
: name: String - ''Property name.'' | : name: String - ''Property name.'' | ||
; | ;Examples | ||
: <code>a.Property("my_charges")</code> | : <code>a.Property("my_charges")</code> | ||
: ''Gets the 'my_charges' property of the atom a.'' | :: ''Gets the 'my_charges' property of the atom a.'' | ||
---- | ---- | ||
=== AtomSimilarity === | === AtomSimilarity === | ||
Line 643: | Line 635: | ||
: a: Motive - ''First motive.'' | : a: Motive - ''First motive.'' | ||
: b: Motive - ''Second motive.'' | : b: Motive - ''Second motive.'' | ||
; | ;Examples | ||
: <code>AtomSimilarity(m,Motive("1tqn_12"))</code> | : <code>AtomSimilarity(m,Motive("1tqn_12"))</code> | ||
: ''Computes the atom similarity between motives m and 1tqn_12.'' | :: ''Computes the atom similarity between motives m and 1tqn_12.'' | ||
---- | ---- | ||
=== Descriptor === | === Descriptor === | ||
Line 653: | Line 645: | ||
: motive: Motive - ''Motive that represents entire structure.'' | : motive: Motive - ''Motive that represents entire structure.'' | ||
: name: String - ''Descriptor name.'' | : name: String - ''Descriptor name.'' | ||
; | ;Examples | ||
: <code>Current().Descriptor("similarity")</code> | : <code>Current().Descriptor("similarity")</code> | ||
: ''Returns the 'similarity' descriptor of the current motive.'' | :: ''Returns the 'similarity' descriptor of the current motive.'' | ||
---- | ---- | ||
=== ResidueSimilarity === | === ResidueSimilarity === | ||
Line 663: | Line 655: | ||
: a: Motive - ''First motive.'' | : a: Motive - ''First motive.'' | ||
: b: Motive - ''Second motive.'' | : b: Motive - ''Second motive.'' | ||
; | ;Examples | ||
: <code>ResidueSimilarity(m, Motive("1tqn_12"))</code> | : <code>ResidueSimilarity(m, Motive("1tqn_12"))</code> | ||
: ''Computes the residue similarity between motives m and 1tqn_12.'' | :: ''Computes the residue similarity between motives m and 1tqn_12.'' | ||
<br/> | <br/> |
Revision as of 22:13, 7 June 2013
Introduction
DISCLAIMER: This is an early version of the MotiveQuery language. There is probably a lot of bugs. Individual function names and syntax are all subject to change.
MotiveQuery is a subset of the Python programming language. Therefore, if you have experience with it, it should not be a problem to use MQ as well.
- The language is case sensitive - "filter" is NOT the same as "FiLtEr".
Some of the functions return Motives
while other only Motive
.
Motive
is a set of atoms.Motives
is a sequence of motives (the sets of atoms).
When a molecule is queried say using the expression Rings(5 * ["C"] + ["O"])
a sequences of motives each containing 6 atoms (5 C and 1 O) is returned. However, some functions such as Filter
need to operate on a single motive (the set of atoms) - not the whole sequences. The query Filter(Residues(), lambda r: r.Count(Atoms()) > 10)
first finds all residue Motives
(sequence) and then passes every single Motive
(set of atoms) to a function that counts the atoms in the motive and returns True if there is at least 11 of them. This is the reasoning behind these two types.
Elementary Types
Basic value types.
Bool
- Examples
True
- True value.
Integer
- Examples
42
- The ultimate answer.
Real
- Examples
12.87
- Real number.
String
- Examples
"aBcD"
- String.
Symbol
Basic Language Syntax
Basic syntactic elements the MotiveQuery language.
Apply
Apply -> ?
Application of a function to its arguments. (internal)
Assign (=)
Assign -> ?
This symbol is used for assigning optional parameters of functions. (internal)
- Examples
NotAminoAcids(NoWaters = 1)
- All residues that are not amino acids or waters.
Lambda
Lambda -> 'a->'b
An anonymous (nameless) function.
- Examples
lambda m: Residues("HIS").Count(m)
- A function that counts number of HIS residues in Motive m.
List
List(elements: ?+) -> List
A list of elements.
- Arguments
- elements: ?+ - Elements.
- Examples
[1, "a", True, [3, 4]]
- Create a list with 4 elements.
Repeat (*)
Repeat(x: ?, n: Integer) -> ?
Creates a Seqeuence of x's repeated n times. This symbol is not directly supported and can be accesed thru the function Many or List concatenation of Python. (internal)
- Arguments
- x: ? - Expression to be repeated.
- n: Integer - Count.
- Examples
Rings(5 * ["C"] + ["O"])
- Equivalent to
Rings("C","C","C","C","C","O")
.
- Equivalent to
Sequence
Sequence(xs: ?*) -> ?
Sequence of elements that is automatically flattened to the argument list of the parent function. (internal)
- Arguments
- xs: ?* - Values.
Tuple
Tuple -> ?
A tuple of elements. Tuples serve as arguments for functions. Internal use only. (internal)
Value Functions
Functions such as addition or comparison of numbers.
Abs
Abs(x: Number) -> Number
Computes the 'Abs' function of the argument.
- Arguments
- x: Number - Argument.
- Examples
Abs(x)
- Evaluates the expression.
Divide (/)
Divide(x: Number, y: Number) -> Number
Computes the 'Divide' function of the values.
- Arguments
- x: Number - Left argument.
- y: Number - Right argument.
- Examples
x / y
- Evaluates the expression.
Equal (==)
Equal(x: Value, y: Value) -> Bool
Determines the 'Equal' relation between two values.
- Arguments
- x: Value - Left argument.
- y: Value - Right argument.
- Examples
x == y
- Evaluates to True or False based on the value of x and y.
Greater (>)
Greater(x: Number, y: Number) -> Bool
Determines the 'Greater' relation between two values.
- Arguments
- x: Number - Left argument.
- y: Number - Right argument.
- Examples
x > y
- Evaluates to True or False based on the value of x and y.
GreaterEqual (>=)
GreaterEqual(x: Number, y: Number) -> Bool
Determines the 'GreaterEqual' relation between two values.
- Arguments
- x: Number - Left argument.
- y: Number - Right argument.
- Examples
x >= y
- Evaluates to True or False based on the value of x and y.
Less (<)
Less(x: Number, y: Number) -> Bool
Determines the 'Less' relation between two values.
- Arguments
- x: Number - Left argument.
- y: Number - Right argument.
- Examples
x < y
- Evaluates to True or False based on the value of x and y.
LessEqual (<=)
LessEqual(x: Number, y: Number) -> Bool
Determines the 'LessEqual' relation between two values.
- Arguments
- x: Number - Left argument.
- y: Number - Right argument.
- Examples
x <= y
- Evaluates to True or False based on the value of x and y.
LogicalAnd (&)
LogicalAnd(xs: Bool+) -> Bool
Computes 'LogicalAnd' of the input values.
- Arguments
- xs: Bool+ - Arguments.
- Examples
x & y
- Evaluates to True or False based on the values of x and y.
LogicalNot (!)
LogicalNot(x: Bool) -> Bool
Computes 'LogicalNot' of the input value.
- Arguments
- x: Bool - Argument.
- Examples
!x
- Evaluates to True or False based on the value of x.
LogicalOr (|)
LogicalOr(xs: Bool+) -> Bool
Computes 'LogicalOr' of the input values.
- Arguments
- xs: Bool+ - Arguments.
- Examples
x | y
- Evaluates to True or False based on the values of x and y.
LogicalXor
LogicalXor(xs: Bool+) -> Bool
Computes 'LogicalXor' of the input values.
- Arguments
- xs: Bool+ - Arguments.
- Examples
LogicalXor(x, y)
- Evaluates to True or False based on the values of x and y.
Minus (-)
Minus(x: Number) -> Number
Computes the arithmetic negation of the argument.
- Arguments
- x: Number - Argument.
- Examples
-x
- Arithmetic negation of x.
NotEqual (!=)
NotEqual(x: Value, y: Value) -> Bool
Determines the 'NotEqual' relation between two values.
- Arguments
- x: Value - Left argument.
- y: Value - Right argument.
- Examples
x != y
- Evaluates to True or False based on the value of x and y.
Plus (+)
Plus(x: Number, y: Number) -> Number
Computes the 'Plus' function of the values.
- Arguments
- x: Number - Left argument.
- y: Number - Right argument.
- Examples
x + y
- Evaluates the expression.
Power (^)
Power(x: Number, y: Number) -> Number
Computes the 'Power' function of the values.
- Arguments
- x: Number - Left argument.
- y: Number - Right argument.
- Examples
x ^ y
- Evaluates the expression.
Subtract (-)
Subtract(x: Number, y: Number) -> Number
Computes the 'Subtract' function of the values.
- Arguments
- x: Number - Left argument.
- y: Number - Right argument.
- Examples
x - y
- Evaluates the expression.
Times (*)
Times(x: Number, y: Number) -> Number
Computes the 'Times' function of the values.
- Arguments
- x: Number - Left argument.
- y: Number - Right argument.
- Examples
x * y
- Evaluates the expression.
Basic Query Functions
Basic building blocks of the language - i.e. atoms, residues, and the like.
AminoAcids
AminoAcids -> Residues
Sequence of all amino acids in a given protein.
- Options
- ChargeType: String = "" - Specify type of the charge. Allowed values: Positive,Negative,Polar,NonPolar.
- Examples
AminoAcids()
- All amino acids.
AminoAcids(ChargeType = "Polar")
- Amino acids with polar charge.
AtomIdRange
AtomIdRange(minId: Integer, maxId: ?Integer) -> Atoms
Sequence of atoms with minId <= atomId <= maxId.
- Arguments
- minId: Integer - Minimum id.
- maxId: ?Integer - Maximum id. If not specified, maxId = minId.
- Examples
AtomIdRange(152, 161)
- Returns all atoms with id between 152 and 161 inclusive.
AtomNames
AtomNames(names: String+) -> Atoms
Sequence of atoms with specified names.
- Arguments
- names: String+ - Allowed names.
- Examples
AtomNames("O1","NH1")
- Returns all atoms with names O1 or NH1.
Atoms
Atoms(symbols: String*) -> Atoms
Sequence of atoms with specified element symbols. If no symbols are specified, yields all atoms one by one. A single atom can be entered using the '@' operator.
- Arguments
- symbols: String* - Allowed element symbols.
- Examples
Atoms("Zn","Ca")
- Returns all atoms with element symbol Zn or Ca
Named
Named(motives: Motives) -> Motives
'Names' the motive by its lowest atom id.
- Arguments
- motives: Motives - Motives to name.
- Examples
Atoms("Zn").Named().AmbientAtoms(7)
- When exported, the result files will have names in the format '[parent id]_[pseudorandom numner]_[zn atomid]'. If the Named function was not used, the name would be just '[parent id]_[pseudorandom numner]'.
NotAminoAcids
NotAminoAcids -> Residues
Sequence of all residues resudies that are not amino acids.
- Options
- NoWaters: Bool = True - Ignore water residues such as HOH.
- Examples
NotAminoAcids()
- Returns all residues that are not amino acids.
NotAtomNames
NotAtomNames(names: String+) -> Atoms
Sequence of atoms that do not have a specified name.
- Arguments
- names: String+ - Forbidden names.
- Examples
NotAtomNames("O4")
- Returns all atoms that are not called O4.
NotAtoms
NotAtoms(symbols: String+) -> Atoms
Sequence of atoms that are not particular elements.
- Arguments
- symbols: String+ - Forbidden element symbols.
- Examples
NotAtoms("O")
- Returns all atoms that are not C.
NotResidues
NotResidues(names: Value+) -> Residues
Sequence of residues that are not called by the specified names.
- Arguments
- names: Value+ - Forbidden residue names.
- Examples
NotResidues("THR","CYS")
- Returns all residues that are not THR or CYS.
RegularMotives
RegularMotives(regex: String) -> Motives
Regular motives. The protein is split into individual chains before the motives are identified.
- Arguments
- regex: String - Regular expression on one letter abbreviations of amino acids.
- Examples
RegularMotives("RGD")
- Finds all RGD motives.
ResidueIdRange
ResidueIdRange(chain: String, min: Integer, max: ?Integer) -> Residues
Sequence of residues with specific chain and min <= sequence number <= max.
- Arguments
- chain: String - Chain idetifier. Case sensitive (a != A).
- min: Integer - Minimum sequence number.
- max: ?Integer - Maximum sequence number. If not specified, max = min.
- Examples
ResidueIdRange("A", 161, 165)
- Returns all residues on chain A with seq. number between 161 and 165 inclusive.
Residues
Residues(names: Value*) -> Residues
Sequence of residues with specified names. If no names are specified, yields all residues one by one. A single residue can be entered using the '#' operator.
- Arguments
- names: Value* - Allowed residue names.
- Examples
Residues("HIS", "CYS")
- Returns all HIS or CYS residues.
RingAtoms
RingAtoms(atom: Atoms, ring: ?Rings) -> Atoms
Returns all rings atoms.
- Arguments
- atom: Atoms - Atom types.
- ring: ?Rings - Specific ring.
- Examples
OnRing(Atoms("C"), Rings(4 * ["C"] + ["O"]))
- Returns all C atoms on a ring with 4C and O.
Rings
Rings(atoms: Value*) -> Rings
Sequence of rings with particular atoms. If no atoms are specified, yields all rings (cycles) one by one.
- Arguments
- atoms: Value* - Ring atoms.
- Examples
Rings(5 * ["C"] + ["O"])
- Returns all rings with 5C and 1O atoms.
Advanced Query Functions
Advanced building blocks of the language - i.e. filters and unions.
Count
Count(where: Motive, what: Motives) -> Integer
Counts all occurences of motive 'what' in motive 'where'.
- Arguments
- where: Motive - Where to count it.
- what: Motives - What motive to count.
- Examples
m.Count(Residues("HIS"))
- Returns the count of HIS residues in the motive m.
Current
Current -> Motive
A variable that is assigned by the application environment.
- Examples
AtomSimilarity(Current(), Motive("model"))
- Returns the atom similarity of the current motive and the model.
Filter
Filter(motives: Motives, filter: Motive->Bool) -> Motives
Filters a sequence of motives with a given predicate.
- Arguments
- motives: Motives - Motives to filter.
- filter: Motive->Bool - Filter predicate.
- Examples
Residues().Filter(lambda m: m.Count(Atoms("C")) >= 3)
- Returns all residues that contain at least 3 C atoms.
Find
Find(source: Motive, motives: Motives) -> Motives
Converts the source motive to a structure and finds motives within it.
- Arguments
- source: Motive - Where to look.
- motives: Motives - Motives to find.
- Examples
AtomSimilarity(Current().Find(NotAtoms("N")).ToMotive(), Motive("model").Find(NotAtoms("N")).ToMotive())
- Computes the atom similarity of the 'current' and 'model' motives, but ignores N atoms.
Inside
Inside(motives: Motives, where: Motives) -> Motives
Finds motives within another motive. Equivalent to where.SelectMany(lambda m: m.Find(motives))
- Arguments
- motives: Motives - Motives to find.
- where: Motives - Where to find them.
- Examples
Atoms("C").Inside(Residues("HIS"))
- Returns all C atoms on HIS residues.
Motive
Motive(structureName: String) -> Motive
Returns a structure represented a motive.
- Arguments
- structureName: String - Name of a structure.
- Examples
Motive("1tqn_12")
- Returns the structure '1tqn_12' represented as a motive.
Or
Or(motives: Motives+) -> Motives
Merges several motive sequences into one.
- Arguments
- motives: Motives+ - Motives to merge.
- Examples
Or(Atoms("Zn").ConnectedResidues(1), Rings())
- Finds all zincs and their connected residues or rings.
SelectMany
SelectMany(motives: Motives, selector: Motive->Motives) -> Motives
Projects a sequence of motives to another.
- Arguments
- motives: Motives - Motives to project.
- selector: Motive->Motives - The selector.
- Examples
Residues("HIS").SelectMany(lambda m: m.Find(Atoms("C")))
- Returns all C atoms on HIS residues.
ToAtoms
ToAtoms(motives: Motives) -> Motives
Collects all 'inner' motives and yields all unique atoms one by one.
- Arguments
- motives: Motives - Motives to split.
- Examples
Residues("HIS").ToAtoms()
- Returns all atoms on HIS residues one by one.
ToMotive
ToMotive(motives: Motives) -> Motive
Collects all 'inner' motives and yields them as a single motive.
- Arguments
- motives: Motives - Motives to convert.
- Examples
ToMotive(Residues("HIS"))
- Returns a single motive that contains all HIS residues.
ToResidues
ToResidues(motives: Motives) -> Motives
Collects all 'inner' motives and yields all unique residues one by one. The residues contain only the atoms that have been yielded by the inner query.
- Arguments
- motives: Motives - Motives to split.
- Examples
ToResidues(Atoms("C"))
- Returns all C atoms grouped by residues.
Union
Union(motives: Motives) -> Motives
Collects all 'inner' motives and yields one created from their unique atoms.
- Arguments
- motives: Motives - Motives to merge.
- Examples
Rings().Union()
- Creates a single motive that contains all rings.
Topology Functions
Functions that manipulate the topology of motives.
ConnectedAtoms
ConnectedAtoms(motive: Motives, n: Integer) -> Motives
Surrounds the inner motive by n layers of atoms.
- Arguments
- motive: Motives - Basic motive.
- n: Integer - Number of atom layers to connect.
- Options
- YieldNamedDuplicates: Bool = False - Yield duplicate motifs if they have a different name.
- Examples
Residues("MAN").ConnectedAtoms(2)
- Finds all MAN residues and then adds two connected levels of atoms to them.
ConnectedResidues
ConnectedResidues(motive: Motives, n: Integer) -> Motives
Surrounds the inner motive by n layers of residues.
- Arguments
- motive: Motives - Basic motive.
- n: Integer - Number of residue layers to connect.
- Options
- YieldNamedDuplicates: Bool = False - Yield duplicate motifs if they have a different name.
- Examples
Atoms("Zn").ConnectedResidues(1))
- Finds all Zn atoms and adds all residues that are connected to them.
IsConnectedTo
IsConnectedTo(current: Motive, motive: Motives) -> Bool
Checks if a particular motive is connected to any other specified motive. The motives must have empty intersection for this function to return true.
- Arguments
- current: Motive - A motive to test.
- motive: Motives - Motive sequence to test against.
- Examples
Atoms().Filter(lambda a: a.IsConnectedTo(Rings()))
- Finds all atoms that are connected to a ring they do not belong to.
IsNotConnectedTo
IsNotConnectedTo(current: Motive, motive: Motives) -> Bool
Checks if a particular motive is not connected to any other specified motive. The motives must have empty intersection for this function to return true.
- Arguments
- current: Motive - A motive to test.
- motive: Motives - Motive sequence to test against.
- Examples
Residues().Filter(lambda r: r.IsNotConnectedTo(Atoms("Ca")))
- Finds all residues that are not connected to Ca atoms. The residue itself can still contain Ca atoms.
Geometry Functions
Functions that manipulate the geometry of motives.
AmbientAtoms
AmbientAtoms(motive: Motives, r: Number) -> Motives
Surrounds the inner motive by atoms that within the given radius from the inner motive.
- Arguments
- motive: Motives - Basic motive.
- r: Number - Radius.
- Options
- ExcludeBase: Bool = False - Exclude the central original motif.
- NoWaters: Bool = True - Ignore water residues such as HOH.
- YieldNamedDuplicates: Bool = False - Yield duplicate motifs if they have a different name.
- Examples
Atoms("Fe").AmbientAtoms(4)
- Finds Fe atoms and all atoms within 4 (angstroms) from each of them.
AmbientResidues
AmbientResidues(motive: Motives, r: Number) -> Motives
Surrounds the inner motive by residues that have at least one atom within the given radius from the inner motive.
- Arguments
- motive: Motives - Basic motive.
- r: Number - Radius.
- Options
- ExcludeBase: Bool = False - Exclude the central original motif.
- NoWaters: Bool = True - Ignore water residues such as HOH.
- YieldNamedDuplicates: Bool = False - Yield duplicate motifs if they have a different name.
- Examples
Rings(6 * ["C"]).AmbientResidues(4)
- Finds rings with 6C atoms and all residues within 4 (angstroms) from each of them.
Cluster
Cluster(r: Number, motives: Motives+) -> Motives
Clusters all motives that are pairwise closer than r (angstroms).
- Arguments
- r: Number - Maximum distance between two motives in the cluster.
- motives: Motives+ - Motives to cluster.
- Examples
Cluster(4, Atoms("Ca"), Rings(5 * ["C"] + ["O"]))
- Finds all instance of one or more rings with 5C and O atoms and one or more Ca atoms that are closer than 4 (angstroms).
Filled
Filled(motive: Motives) -> Motives
Adds all atoms that fall within the circumsphere (with radius multiplied by the factor) of the basic motive.
- Arguments
- motive: Motives - Basic motive.
- Options
- NoWaters: Bool = True - Ignore water residues such as HOH.
- RadiusFactor: Number = 0.75 - Circumsphere radius factor.
- Examples
Cluster(4, Residues("HIS")).Filled(RadiusFactor = 0.75)
- Finds clusters of HIS residues and all atoms within the circumsphere.
Near
Near(r: Number, motives: Motives+) -> Motives
Clusters all motives that are pairwise closer than r (angstroms) and checks if the "counts" match.
- Arguments
- r: Number - Maximum distance between two sub-motives in the motive.
- motives: Motives+ - Motives to 'cluster'.
- Examples
Near(4, Many(2, Atoms("Ca")), Rings(5 * ["C"] + ["O"]))
- Finds all instance of a single ring with 5C and O atoms and two Ca atoms that are closer than 4 (angstroms).
NearestDistanceTo
NearestDistanceTo(current: Motive, motive: Motives) -> Real
Finds the distance to a particular motive.
- Arguments
- current: Motive - A motive to test.
- motive: Motives - Motive sequence to test against.
- Examples
Atoms().Filter(lambda m: m.NearestDistanceTo(Residues("ASP")) >= 5)
- Finds all atoms that are at least 5 (angstroms) away from any ASP residue.
Miscellaneous Functions
Various useful functions.
AtomProperty
AtomProperty(atomMotive: Motive, name: String) -> ?
If the property exists and the motive consits of a single atom, returns the property. Otherwise, returns Nothing.
- Arguments
- atomMotive: Motive - Single atom motive.
- name: String - Property name.
- Examples
a.Property("my_charges")
- Gets the 'my_charges' property of the atom a.
AtomSimilarity
AtomSimilarity(a: Motive, b: Motive) -> Real
Computes Jaccard/Tanimoto coefficient on atoms (element symbols) of both structures.
- Arguments
- a: Motive - First motive.
- b: Motive - Second motive.
- Examples
AtomSimilarity(m,Motive("1tqn_12"))
- Computes the atom similarity between motives m and 1tqn_12.
Descriptor
Descriptor(motive: Motive, name: String) -> ?
Returns the descriptor. If the descriptor does not exist, 'null' is returned.
- Arguments
- motive: Motive - Motive that represents entire structure.
- name: String - Descriptor name.
- Examples
Current().Descriptor("similarity")
- Returns the 'similarity' descriptor of the current motive.
ResidueSimilarity
ResidueSimilarity(a: Motive, b: Motive) -> Real
Computes Jaccard/Tanimoto coefficient on residue names of both structures.
- Arguments
- a: Motive - First motive.
- b: Motive - Second motive.
- Examples
ResidueSimilarity(m, Motive("1tqn_12"))
- Computes the residue similarity between motives m and 1tqn_12.