如何返回包含正确匹配的DNA对的数组?

时间:2019-06-01 19:20:15

标签: javascript typescript bioinformatics

我有一个函数,它接收一串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"]);
  });
});

2 个答案:

答案 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)