卡在python 3循环中

时间:2017-01-18 18:31:05

标签: python

我需要创建一个函数,返回给定DNA序列中的互补序列。例如,如果您使用' AT'作为论点,它应该返回TA'。但是,如果DNA序列可以有任何长度,我真的不知道如何创建它。如果互补核苷酸是A = T G = C,我怎样才能建立一个返回互补序列的函数。 首先,我有想法创建一个循环以创建它,但我卡住了。

这是我的初始代码:

var columns = [];
var dates = [];
var data = [];
for (var i = 0; i < arr.length; i++) {
  for (var key in arr[i][1]) {
    if (dates.indexOf(key) === -1) {
      dates.push(key)
    }
  }
}
for (var i = 0; i < dates.length; i++) {
  var tempObj = {
    date: dates[i],
  }
  for (var x = 0; x < arr.length; x++) {
    //console.log(arr[x][0], arr[x][1][dates[i]])
    tempObj[arr[x][0]] = arr[x][1][dates[i]]
  }
  data.push(tempObj)
}
for (var key in data[0]) {
  columns.push({
    title: key.charAt(0).toUpperCase() + key.substring(1),
    data: key
  });
}
console.log(dates);
console.log(data);
console.log(columns);
$(function() {
  $("#example").DataTable({
    "columns": columns,
    "data": data
  });
});

2 个答案:

答案 0 :(得分:1)

怎么样?这是一个非常肮脏的解决方案,但可以解决这个问题

def get_complementary_sequence(sequence):
    mp = {"A":"T", 
          "T":"A",
          "C":"G", 
          "G":"C"}

    return ''.join(mp[c] for c in sequence)

另请注意,这仅在序列仅包含A,T,C或G时才有效。

答案 1 :(得分:1)

我们走了。您可以以人性化的方式配置PAIRS

from itertools import permutations, chain

PAIRS = [
    ('A', 'T'),
    ('G', 'C'),
]
COMPLEMENTATIONS = {
    k: v
    for k, v in
    chain(*chain(list(itertools.permutations(p)) for p in PAIRS))
}

def get_complementary_sequence(sequence):
    return ''.join(map(COMPLEMENTATIONS.get, sequence))

用法:

get_complementary_sequence('ATGCCGTAATTTCGCA')
'TACGGCATTAAAGCGT'