/// <summary> /// Translate 3 byte representations of DNA bases to an amino acid /// </summary> /// <param name="mitochondrial"></param> /// <param name="base1"></param>ec /// <param name="base2"></param> /// <param name="base3"></param> /// <param name="aminoAcid"></param> /// <returns></returns> public static bool TryTranslateBytes(bool mitochondrial, byte base1, byte base2, byte base3, out byte aminoAcid) { if (mitochondrial) { return(CodonsVertebrateMitochondrial.TryLookup( Transcription.GetRnaComplement(base1), Transcription.GetRnaComplement(base2), Transcription.GetRnaComplement(base3), out aminoAcid)); } else { return(Codons.TryLookup( Transcription.GetRnaComplement(base1), Transcription.GetRnaComplement(base2), Transcription.GetRnaComplement(base3), out aminoAcid)); } }
/// <summary> /// Is the last codon a STOP codon? /// </summary> /// <returns></returns> public bool isWarningStopCodon() { if (IsProteinCoding()) { return(false); } //!Config.get().isTreatAllAsProteinCoding() && // Not even one codon in this protein? Error ISequence cds = RetrieveCodingSequence(); if (cds.Count < 3) { return(true); } ISequence codon = cds.GetSubSequence(cds.Count - GeneModel.CODON_SIZE, GeneModel.CODON_SIZE); return(Codons.TryLookup(Transcription.Transcribe(codon), 0, out byte aa) && aa == Alphabets.Protein.Ter); }
/// <summary> /// Get AA for a single DNA codon /// </summary> /// <param name="codon"></param> /// <param name="aa"></param> /// <returns></returns> public static bool TranslateDnaCodon(string codon, out byte aa) { ISequence rnaCodon = Transcription.Transcribe(new Sequence(Alphabets.DNA, codon.Select(c => (byte)c).ToArray())); return(Codons.TryLookup(rnaCodon, 0, out aa)); }