X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fanalysis%2FRna.java;h=7c077088af2c9ce76661c8e13dcf09c22069f9d9;hb=9c1dd670f293d8f33de55133397b4cd2d4baf38e;hp=f497f0e4e909be7d49f6930d4d4c8dfe3bf9a532;hpb=267f5674a53a735d8e13a2a4c12a4c8d8b0c1f00;p=jalview.git diff --git a/src/jalview/analysis/Rna.java b/src/jalview/analysis/Rna.java index f497f0e..7c07708 100644 --- a/src/jalview/analysis/Rna.java +++ b/src/jalview/analysis/Rna.java @@ -52,6 +52,19 @@ public class Rna } /** + * Answers true if the string is a valid open pair rna secondary structure + * symbol. Currently accepts A-Z, ([{< + * + * @param s + * @return + */ + public static boolean isOpeningParenthesis(String s) + { + return s != null && s.length() == 1 + && isOpeningParenthesis(s.charAt(0)); + } + + /** * Answers true if the character is a valid close pair rna secondary structure * symbol. Currently accepts a-z, )]}> * @@ -64,6 +77,19 @@ public class Rna } /** + * Answers true if the string is a valid close pair rna secondary structure + * symbol. Currently accepts a-z, )]}> + * + * @param s + * @return + */ + public static boolean isClosingParenthesis(String s) + { + return s != null && s.length() == 1 + && isClosingParenthesis(s.charAt(0)); + } + + /** * Returns the matching open pair symbol for the given closing symbol. * Currently returns A-Z for a-z, or ([{< for )]}>, or the input symbol if it * is not a valid closing symbol. @@ -298,6 +324,18 @@ public class Rna } /** + * Answers true if the string is a recognised symbol for RNA secondary + * structure. Currently accepts a-z, A-Z, ()[]{}<>. + * + * @param s + * @return + */ + public static boolean isRnaSecondaryStructureSymbol(String s) + { + return isOpeningParenthesis(s) || isClosingParenthesis(s); + } + + /** * Translates a string to RNA secondary structure representation. Returns the * string with any non-SS characters changed to spaces. Accepted characters * are a-z, A-Z, and (){}[]<> brackets. @@ -378,6 +416,54 @@ public class Rna return false; } + public static boolean isCanonicalPair(char first, char second) + { + + if (first > 'Z') + { + first -= 32; + } + if (second > 'Z') + { + second -= 32; + } + + switch (first) + { + case 'A': + switch (second) + { + case 'T': + case 'U': + return true; + } + break; + case 'G': + switch (second) + { + case 'C': + return true; + } + break; + case 'C': + switch (second) + { + case 'G': + return true; + } + break; + case 'T': + case 'U': + switch (second) + { + case 'A': + return true; + } + break; + } + return false; + } + /** * Returns the matching close pair symbol for the given opening symbol. * Currently returns a-z for A-Z, or )]}> for ([{<, or the input symbol if it