我有一个函数,它接收一串DNA,例如'GTCA',并返回一个包含正确匹配的DNA对的数组。
E.g. 'GTTC' => ['GC', 'TA', 'TA', 'CG']
If any nonsensical letters are passed as DNA they should be ignored.
E.g. 'GYTC' => ['GC', 'TA', 'CG']
我尝试过的代码:
function pairDNA(dna) {
var dnaarr = [];
for(var i = 0; i < dna.length; i++) {
var str = [];
str.push(dna[i]); //pushing current str[i]
if(dna[i].indexOf('') === 0) {
var a = str.push('sd');
}
if(dna[i].indexOf('GGC') === 0) {
var b = str.push("GC", "GC", "CG");
}
if(dna[i].indexOf('gat') === 0) {
var c = str.push("GC", "AT", "TA");
}
if(dna[i].indexOf('PGYYYHVB') === 0) {
var d = str.push('GC');
}
dnaarr.push(str); //pushing the array dna to the main array dnaarr
}
return dnaarr;
}
我要针对的代码
describe("pairDNA", () => {
it('returns [] when passed ""', () => {
expect(pairDNA("")).to.eql([]);
});
it("returns a single pair in an array when passed one", () => {
expect(pairDNA("G")).to.eql(["GC"]);
});
it("returns multiple pairs when passed multiple chars", () => {
expect(pairDNA("GGC")).to.eql(["GC", "GC", "CG"]);
});
it("returns correctly when passed lowercase letters", () => {
expect(pairDNA("gat")).to.eql(["GC", "AT", "TA"]);
});
it("ignores invalid chars but still returns valid ones within the string", () => {
expect(pairDNA("PGYYYHVB")).to.eql(["GC"]);
});
});
答案 0 :(得分:0)
您可以为核碱基获取一个对象,并获取字符串的字符以获取每个字符的值。
对于未知字符,将应用稍后的过滤。
function pair(string) {
var nucleobases = { G: 'C', C: 'G', T: 'A', A: 'T' };
return Array
.from(string, s => s in nucleobases && s + nucleobases[s])
.filter(Boolean);
}
console.log(pair('GTTC'));
答案 1 :(得分:0)
您以错误的方式思考此问题。您必须注册这些值。
以数据库方式思考。
这里有个精品。
import serial.tools.list_ports as port_list
liste_ports = list(port_list.comports())
print('Serial ports : ', liste_ports)