【问题标题】:Matlab: DNA Sequence ComparisonMatlab:DNA序列比较
【发布时间】:2015-12-08 16:10:51
【问题描述】:

我想比较两个 DNA 序列。但是,我想将第一个蛋白质用于第一个序列,并将其与第二个序列的全长进行比较,依此类推。

例如

DNASequence1:ABCDEFGHIJKA

DNASequence2: ABCHIKABTIYO

因此,它获取序列 A 中的第一个蛋白质并将其与第二个序列进行比较,产生两个匹配。然后它接受 B 并比较它,产生另外两个匹配项。以此类推,直到所有的蛋白质都比较完毕。

【问题讨论】:

  • 提示:看看DNASequence2 == DNASequence1(1)给你什么。
  • 这样可以吗? sum(~bsxfun(@minus,dna1,dna2'),1)
  • 不怕 hbaderts。谢谢@beaker,我了解现在产生的结果。现在将尝试编写一些代码!
  • 另一个提示:您可能希望将bsxfun@eq 一起使用。
  • @beaker 还有更多线索吗?如果可能的话,我希望以某种形式的循环进行设置,因为 DNA 长度可以说两个序列为 15,另一个为 20。

标签: matlab dna-sequence


【解决方案1】:

您可以使用循环来执行此操作,但bsxfun 更简洁(并且可能更快)并给出相同的结果:

A = 'ABCDEFGHIJKA';   %// I shortened the variable names...
B = 'ABCHIKABTIYO';   %// because I don't like typing.

C = bsxfun(@eq, B, A')

C =

   1   0   0   0   0   0   1   0   0   0   0   0
   0   1   0   0   0   0   0   1   0   0   0   0
   0   0   1   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   1   0   0   0   0   0   0   0   0
   0   0   0   0   1   0   0   0   0   1   0   0
   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   1   0   0   0   0   0   0
   1   0   0   0   0   0   1   0   0   0   0   0

C 的每一行都是1,其中来自A 的对应元素出现在B 中。例如,行9 给出了所有出现在I 序列中的字母B

这也适用于序列长度不同的情况:

>> D = [B B]
D = ABCHIKABTIYOABCHIKABTIYO

>> bsxfun(@eq, D, A')
ans =

   1   0   0   0   0   0   1   0   0   0   0   0   1   0   0   0   0   0   1   0   0   0   0   0
   0   1   0   0   0   0   0   1   0   0   0   0   0   1   0   0   0   0   0   1   0   0   0   0
   0   0   1   0   0   0   0   0   0   0   0   0   0   0   1   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0   1   0   0   0   0   0   0   0   0
   0   0   0   0   1   0   0   0   0   1   0   0   0   0   0   0   1   0   0   0   0   1   0   0
   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0   1   0   0   0   0   0   0
   1   0   0   0   0   0   1   0   0   0   0   0   1   0   0   0   0   0   1   0   0   0   0   0

【讨论】:

  • 感谢您。对不起,我之前有一个非常愚蠢的时刻!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多