MATLAB中的DNA到2位二进制表示

时间:2017-11-23 11:31:15

标签: matlab dna-sequence

我想将给定的DNA序列转换为符合以下规则的相应2位二进制序列:A = 00C = 01T = 10G = 11。我写了以下代码。

str = 'ATTCGA';
[~,idx]= ismember(upper(str),'ATCG');
C= {'00', '10', '01', '11'};
z= [c{idx}]-'0';
R = 0.992;
theta = (2*pi)/3;
b = [1 0 -1];
a = [1 -2*R*cos(theta) R^2];
u = filter(b,a,z);
Y = abs(u).^2; 
plot(Y/max(Y)); 
axis([0 8000 0 1.05]);

但问题是代码每个单元生成一个比特,而每个单元需要2比特:

screenshot

1 个答案:

答案 0 :(得分:0)

您正在进行中,您只是以错误的方式进行索引/连接:

str     = 'ATTCGA';
[~,idx] = ismember(upper(str),'ATCG');
dna_map = {'00', '10', '01', '11'};

% Index with parentheses instead of braces, and don't concatenate
dna_bin = dna_map(idx)

这将为您提供相应的单元格数组:

dna_bin = 
    '00'    '10'    '10'    '01'    '11'    '00'

不知道你想对剩下的步骤做些什么,但是......