Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何绘制DNA序列的基因图,比如ATGCCGCTGCGC?_Matlab_Wolfram Mathematica_Bioinformatics_Dna Sequence - Fatal编程技术网

Matlab 如何绘制DNA序列的基因图,比如ATGCCGCTGCGC?

Matlab 如何绘制DNA序列的基因图,比如ATGCCGCTGCGC?,matlab,wolfram-mathematica,bioinformatics,dna-sequence,Matlab,Wolfram Mathematica,Bioinformatics,Dna Sequence,我需要根据病毒的DNA序列生成一个随机游走,给定它的2k碱基对序列。序列看起来像“ATGCGTCGTAACGT”。这条路应该向右拐A,向左拐T,向上拐G,向下拐C。 我如何使用Matlab、Mathematica或SPSS实现这一目的?并不是说我真的理解您想要的“图形”,而是这里有一个文字解释 以下代码不一定是最终形式。在我尝试改进任何东西之前,我想知道这是否正确 rls = {"A" -> {1, 0}, "T" -> {-1, 0}, &q

我需要根据病毒的DNA序列生成一个随机游走,给定它的2k碱基对序列。序列看起来像“ATGCGTCGTAACGT”。这条路应该向右拐A,向左拐T,向上拐G,向下拐C。
我如何使用Matlab、Mathematica或SPSS实现这一目的?

并不是说我真的理解您想要的“图形”,而是这里有一个文字解释

以下代码不一定是最终形式。在我尝试改进任何东西之前,我想知道这是否正确

rls = {"A" -> {1, 0}, "T" -> {-1, 0}, "G" -> {0, 1}, "C" -> {0, -1}};
Prepend[Characters@"ATGCGTCGTAACGT" /. rls, {0, 0}];
Graphics[Arrow /@ Partition[Accumulate@%, 2, 1]]


三维选项


现在我知道您想要什么了,下面是第一个函数的打包版本:

genePlot[s_String] :=
 Module[{rls},
  rls =
   {"A" -> { 1, 0},
    "T" -> {-1, 0},
    "G" -> {0,  1},
    "C" -> {0, -1}};
  Graphics[Arrow /@ Partition[#, 2, 1]] & @
   Accumulate @ Prepend[Characters[s] /. rls, {0, 0}]
]
像这样使用它:

genePlot["ATGCGTCGTAACGT"]

假设序列
S
已经映射到整数数组*),那么根据规则
R
,移动的实际计算是简单的:

R =
   1  -1   0   0
   0   0   1  -1
S =
   1   2   3   4   3   2   4   3   2   1   1   4   3   2
T= cumsum(R(:, S), 2)
T =
   1   0   0   0   0  -1  -1  -1  -2  -1   0   0   0  -1
   0   0   1   0   1   1   0   1   1   1   1   0   1   1
*)您需要详细说明实际的顺序。它是表示为单个字符串,还是表示为单元格数组或其他形式?
编辑
假设序列表示为字符串,则将其映射为整数序列
S
,如:

r= zeros(1, 84);
r(double("ATGC"))= [1 2 3 4];
S= r(double("ATGCGTCGTAACGT"))
并绘制它:

plot([0 T(1, :)], [0 T(2, :)], linespec)

这里需要
linespec

听起来你可能在谈论CGR,或者Joel Jefferey在1990年的论文中描述的基因序列的所谓混沌游戏表示法。以下是Mathematica中的一个实现:

cgrPic[s_String] := Module[
  {},
  chars = StringCases[s, "G"|"A"|"T"|"C"];
  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];
  ListPlot[pts, AspectRatio -> Automatic]]
下面是如何将其应用于Mathematica的
GenomeData
命令中的基因序列:

cgrPic[GenomeData["FAT4", "FullSequence"]]

你也可以试试这样的东西

RandomDNAWalk[seq_, path_] := 
 RandomDNAWalk[StringDrop[seq, 1], 
  Join[path, getNextTurn[StringTake[seq, 1]]]];

RandomDNAWalk["", path_] := Accumulate[path];

getNextTurn["A"] := {{1, 0}};
getNextTurn["T"] := {{-1, 0}};
getNextTurn["G"] := {{0, 1}};
getNextTurn["C"] := {{0, -1}};

ListLinePlot[
 RandomDNAWalk[
  StringJoin[RandomChoice[{"A", "T", "C", "G"}, 2000]], {{0, 0}}]]

我以前不知道马克·麦克卢尔(Mark McClure)关于基因序列混沌博弈表示的文章,但它让我想起了Jose Manuel Gutiérrez(Mathematica Journal第9卷第2期)的一篇文章,该文章还为使用DNA序列(四个碱基)的IFS提供了混沌博弈算法。详细说明见(原文)

该方法可用于生成如下图。为了好玩,我(在RHS面板中)加入了由相应互补DNA链(cDNA)生成的图

  • 小鼠线粒体DNA(LHS)及其功能 互补链(cDNA)(RHS)

这些图由GenBank标识符gi | 342520生成。该序列包含16295个碱基

(Jose Manuel Gutiérrez使用的例子之一。如果有人感兴趣,可以根据gi | 1262342生成人体等效物的图)

  • 人类β-珠蛋白区(LHS)及其cDNA(RHS)

由gi | 455025 |生成(示例 用我的马克·麦克卢尔)。该序列包含73308个碱基

有相当有趣的情节!这种曲线图的(有时)分形性质是已知的,但在LHS和RHS(cDNA)版本中明显的对称性是非常令人惊讶的(至少对我来说)

一件好事是,通过直接导入(比如说,从Genbank)序列,然后使用Mma的功能,可以很容易地生成任何DNA序列的此类图。
你所需要的就是注册号!(‘未知’核苷酸,如“R”可能需要清除)(我使用的是Mma v7)

最初的默示(稍加修改)(由何塞·曼努埃尔·古铁雷斯撰写)

重要更新

根据马克·麦克卢尔的建议,我已将
Point/@Orbit[s,Union[s]
更改为
Point@Orbit[s,Union[s]]

这大大加快了速度请参见下面马克的评论

Orbit[s_List, {a_, b_, c_, d_}] := 
  OrbitMap[s /. {a -> {0, 0}, b -> {0, 1}, c -> {1, 0}, 
     d -> {1, 1}}];
OrbitMap = 
  Compile[{{m, _Real, 2}}, FoldList[(#1 + #2)/2 &, {0, 0}, m]];
IFSPlot[s_List] := 
 Show[Graphics[{Hue[{2/3, 1, 1, .5}], AbsolutePointSize[2.5], 
    Point @ Orbit[s, Union[s]]}], AspectRatio -> Automatic, 
  PlotRange -> {{0, 1}, {0, 1}}, 
  GridLines -> {Range[0, 1, 1/2^3], Range[0, 1, 1/2^3]}]
这是一个蓝色的情节。对于绿色,将色调[]更改为色调[{1/3,1,1,5}]

下面的代码现在生成第一个绘图(用于小鼠线粒体DNA)

为了得到cDNA图,我使用了以下转换规则(还更改了色调设置)

感谢并帮助从NCBI站点直接导入序列

为了清楚起见,把事情分开一点

导入序列

mouseMitoFasta=Import["http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nucleotide&id=342520&rettype=fasta&retmode=text","Data"];
Mathematica J.原始文章中给出的导入序列的方法已注明日期

一张漂亮的支票

First@mouseMitoFasta

输出:

{>gi|342520|gb|J01420.1|MUSMTCG Mouse mitochondrion, complete genome}
{16295,{A,C,G,T},{{G,2011},{T,4680},{A,5628},{C,3976}}}
基础列表的生成

mouseMitoBases=Flatten@Characters@Rest@mouseMitoFasta
{Length@mouseMitoBases, Union@mouseMitoBases,Tally@mouseMitoBases}
更多检查

mouseMitoBases=Flatten@Characters@Rest@mouseMitoFasta
{Length@mouseMitoBases, Union@mouseMitoBases,Tally@mouseMitoBases}
输出:

{>gi|342520|gb|J01420.1|MUSMTCG Mouse mitochondrion, complete genome}
{16295,{A,C,G,T},{{G,2011},{T,4680},{A,5628},{C,3976}}}
第二组图是以类似的方式从gi | 455025生成的。请注意,序列很长

{73308,{A,C,G,T},{{G,14785},{A,22068},{T,22309},{C,14146}}}
最后一个例子(包含265922 bp),也显示了迷人的“分形”对称性。(这些是通过
IFSPlot
中的
AbsolutePointSize[1]
生成的)

fasta文件的第一行:

{>gi | 328530803 | gb | AFBL01000008.1 |放线菌口腔分类群170 str.F0386 A|u spOraltaxon170F0386-1.0|u Cont9.1,全基因组鸟枪序列}

相应的cDNA图在RHS上再次以蓝色显示


最后,马克还提供了非常漂亮的情节(例如gi | 328530803),可以作为笔记本下载

这个问题似乎已经得到了很好的回答,但我想我要补充一点,您所描述的内容之前已经在一系列DNA序列数字表示方法的旗帜下发表过,这些方法在我们的

事实证明,DNA行走在实践中并不是很有用,但允许直观的可视化。我手头没有,但我想我的同事会非常乐意提供用于生成下图的Matlab代码


欢迎来到StackOverflow。你能举个例子吗?我觉得很难理解你想要什么。你是说如果你把这些点连接起来,一个独特的序列会在页面上形成一个独特的轨迹吗?如果是这样,这个轨迹就是goi
{73308,{A,C,G,T},{{G,14785},{A,22068},{T,22309},{C,14146}}}