我需要创建一个函数,返回给定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
});
});
答案 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'