【发布时间】:2011-11-04 12:10:34
【问题描述】:
我已尝试使用mathematica 代码来制作此地址中发布的DNA 序列的混乱游戏: http://facstaff.unca.edu/mcmcclur/blog/GeneCGR.html
是这样的:
genome = Import["c:\data\sequence.fasta", "Sequence"];
genome = StringReplace[ToString[genome], {"{" -> "", "}" -> ""}];
chars = StringCases[genome, "G" | "C" | "T" | "A"];
f[x_, "A"] := x/2;
f[x_, "T"] := x/2 + {1/2, 0};
f[x_, "G"] := x/2 + {1/2, 1/2};
f[x_, "C"] := x/2 + {0, 1/2};
pts = FoldList[f, {0.5, 0.5}, chars];
Graphics[{PointSize[Tiny], Point[pts]}]
我拥有的 fasta 序列只是一个字母序列,例如 AACCTTTGATCAAA 并且要生成的图形是这样的:
该代码适用于小序列,但是当我想要放置一个巨大的序列时,例如几乎 40Mb 的染色体,该程序需要很多时间并且只显示一个黑色方块,因此无法分析。 是否可以改进上述代码,使其显示的正方形更大?顺便说一句,正方形必须只是正方形单位。 提前感谢您的帮助
【问题讨论】:
-
您能否发布/链接到您的大型样本数据集,以便我们进行测试?
-
40Mb 的 ASCII 染色体对于mathematica 来说似乎有很多字节可以按顺序咀嚼。这个问题看起来很容易使用 map/reduce 技术来解决。我不熟悉mathematica,但these functions appear to be available。
-
@Manolo 查看我对答案的编辑
-
@Alexander 问题的本质不是迫使我们使用顺序解决方案吗?点
n+1的坐标是从点n的坐标计算出来的,因此除了按顺序进行之外别无他法。除非有人为某些常见的字符序列预先计算转换函数(不是结果),但这听起来像是很多工作,如果可行的话。 -
我们之前有一个关于 DNA 混沌游戏的问题:stackoverflow.com/q/5610265/615464
标签: wolfram-mathematica dna-sequence fasta chaos