UNPKG

drptranslator

Version:
153 lines (152 loc) 4.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const dna_1 = require("../symbols/dna"); const rna_1 = require("../symbols/rna"); const rna_translator_1 = require("./rna.translator"); /** * Specialized class that allows to translate and transcript DNA sequences */ class DNATranslator { /** * @param {string} DNA sequence to be translated into a complementary chain of DNA. * @returns {string} The string returned is a complementary sequence of the provided in the parameter. * * ``` * ATGCTA * * TACGAT * ``` */ transDNAtoOpositeDNA(dna) { const dnaArr = dna // get uppercase string .toUpperCase() .split("") // convert each letter in the string to RNA .map((base) => this.matchOpositeDnaBase(this.matchDnaBase(base))); return this.dnaToString(dnaArr); } /** * @param {string} dna sequence to be translated into a complementary chain of RNA * @returns {string} The string returned is a complementary sequence of the provided in the parameter * * ``` * ATGCTA * * UACGAU * ``` */ transDNAtoRNA(dna) { const rnaArr = dna // get uppercase string .toUpperCase() .split("") // convert each letter in the string to RNA .map((base) => this.matchOpositeRnaBase(this.matchDnaBase(base))); return this.rnaToString(rnaArr); } /** * @param {string} dna sequence to be translated into a complementary chain of Aminoacids * @returns {string} The string returned is a complementary sequence of the provided in the parameter * * ``` * ATGCTA * * Tyr-Asp * ``` */ transDNAtoAA(dna) { const rnaTrans = new rna_translator_1.RNATranslator(); const rnaSeq = this.transDNAtoRNA(dna); return rnaTrans.transRNAtoAA(rnaSeq); } /** * @param {string} base digit string (character) that is the base to be converted into the RNA enum. * @returns {RNA} Returns the corresponding RNA base. * */ matchRnaBase(base) { switch (base) { case "A": return rna_1.RNA.A; case "T": return rna_1.RNA.U; case "G": return rna_1.RNA.G; case "C": return rna_1.RNA.C; default: throw new TypeError(`Invalid character: ${base}`); } } /** * @param {DNA} base base which needs to be replaced. * @returns {RNA} Returns a RNA base which is the oposite base of the DNA base provided. */ matchOpositeRnaBase(base) { switch (base) { case dna_1.DNA.A: return rna_1.RNA.U; case dna_1.DNA.T: return rna_1.RNA.A; case dna_1.DNA.G: return rna_1.RNA.C; case dna_1.DNA.C: return rna_1.RNA.G; default: throw new TypeError(`Invalid character: ${base}`); } } /** * @param {DNA} base base which needs to be replaced * @returns {RNA} Returns a RNA base which is the oposite base of the DNA base provided */ matchOpositeDnaBase(base) { switch (base) { case dna_1.DNA.A: return dna_1.DNA.T; case dna_1.DNA.T: return dna_1.DNA.A; case dna_1.DNA.G: return dna_1.DNA.C; case dna_1.DNA.C: return dna_1.DNA.G; default: throw new TypeError(`Invalid character: ${base}`); } } /** * @param {string} base digit string (character) that is the base to be converted into the DNA enum * @returns {DNA} Returns the corresponding DNA base * */ matchDnaBase(base) { switch (base) { case "A": return dna_1.DNA.A; case "T": return dna_1.DNA.T; case "G": return dna_1.DNA.G; case "C": return dna_1.DNA.C; default: throw new TypeError(`Invalid character: ${base}`); } } /** * @param {RNA[]} rnaArray array containing the sequence to be parsed into a string. * @returns {string} string containing the RNA sequence provided. */ rnaToString(rnaArray) { return rnaArray.join(""); } /** * @param {DNA[]} dnaArray array containing the sequence to be parsed into a string. * @returns {string} string containing the DNA sequence provided. */ dnaToString(dnaArray) { return dnaArray.join(""); } } exports.DNATranslator = DNATranslator;