drptranslator
Version:
A DNA-RNA-Protein translator library
153 lines (152 loc) • 4.98 kB
JavaScript
;
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;