diff --git a/uk/ac/sanger/artemis/io/GFFStreamFeature.java b/uk/ac/sanger/artemis/io/GFFStreamFeature.java index 9fa2cc0cf70f44bf965200d5c149b72800805678..3d4923b22341513667a1d294727d80a206de1f75 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 d1dc8836d25054e5a3d4a069eeb0c1a360e39c49..f62ed79dbe2d4c883e1b398973a900ea6d4394e1 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 (); }