From b2a78f42aab54864bb6e65d7f7aff4f8fffe8357 Mon Sep 17 00:00:00 2001 From: tcarver <tjc> Date: Tue, 5 Nov 2013 14:35:13 +0000 Subject: [PATCH] test for selenocysteine qualifier --- uk/ac/sanger/artemis/io/GFFStreamFeature.java | 30 +++++++++++++++++++ uk/ac/sanger/artemis/io/ValidateFeature.java | 3 ++ 2 files changed, 33 insertions(+) diff --git a/uk/ac/sanger/artemis/io/GFFStreamFeature.java b/uk/ac/sanger/artemis/io/GFFStreamFeature.java index 9fa2cc0cf..3d4923b22 100644 --- a/uk/ac/sanger/artemis/io/GFFStreamFeature.java +++ b/uk/ac/sanger/artemis/io/GFFStreamFeature.java @@ -1320,6 +1320,36 @@ public class GFFStreamFeature extends SimpleDocumentFeature return false; } + /** + * Test if this is feature is marked as having a stop codon + * redefined as selenocysteine + * @param f + * @return + */ + public static boolean isSelenocysteine(Feature f) + { + if(!(f instanceof GFFStreamFeature)) + return false; + try + { + ChadoCanonicalGene gffGene = ((GFFStreamFeature)f).getChadoGene(); + if(gffGene == null) + return false; + String transcript = gffGene.getTranscriptFromName( + GeneUtils.getUniqueName(f)); + if(transcript == null) + return false; + Feature pep = gffGene.getProteinOfTranscript(transcript); + if(pep == null) + return false; + if(pep.getQualifierByName("stop_codon_redefined_as_selenocysteine") != null) + return true; + } + catch (Exception e){} + + return false; + } + public static void main(String args[]) { Key key = new Key("region"); diff --git a/uk/ac/sanger/artemis/io/ValidateFeature.java b/uk/ac/sanger/artemis/io/ValidateFeature.java index d1dc8836d..f62ed79db 100644 --- a/uk/ac/sanger/artemis/io/ValidateFeature.java +++ b/uk/ac/sanger/artemis/io/ValidateFeature.java @@ -677,6 +677,9 @@ public class ValidateFeature if(!cds_predicate.testPredicate (f)) return false; + if(feature instanceof GFFStreamFeature && GFFStreamFeature.isSelenocysteine(feature)) + return false; + final AminoAcidSequence aa = f.getTranslation (); return aa.containsStopCodon (); } -- GitLab