找回密码
 立即注册
查看: 6906|回复: 3

R语言ape包运行clustal,显示无法打开文件的错误,怎么办?

[复制链接]
发表于 2013-2-20 14:39:58 | 显示全部楼层 |阅读模式
本人刚刚开始学习R语言,主要想学习ape,diversitree 等与生物系统发育及进化相关的程序包,在比对DNA序列的时候遇到图示这样的麻烦,我知道有很多专业的比对软件,可我还是想把这个问题解决了,请高人赐教,在此谢过。 未命名.jpg
回复

使用道具 举报

发表于 2013-2-21 23:18:49 | 显示全部楼层
本帖最后由 snow 于 2013-2-21 23:28 编辑

我来分享下我的解决过程:
首先分析问题:
看到你的错误,我先下载了ape包,运行read.dna没问题,运行clustal出错,错误跟你的一模一样,连例子都错误,不能吧....,我觉得肯定是哪里没有设置对。
仔细看错误提示:
无法打开下面文件,
C:\Users\ADMINI~1\AppData\Local\Temp\RtmpCuvK5E/input_clustal.aln
这说明这个aln文件没有,
于是我用打开一个文件夹窗口,在上面输入C:\Users\ADMINI~1\AppData\Local\Temp\RtmpCuvK5E,我发现里面只有一个input_clustal.fas文件,没有aln文件,确实没有这个文件哈,难怪程序报错。
于是我想,一个临时文件夹会产生input_clustal.fas这个文件,那理论上也应该产生aln文件,既然没上产生,是不是缺什么插件,而没产生得了呢。
接下来只有看源程序代码了。
在R命令窗口输入函数clustal,显示下面函数
  1. > clustal
  2. function (x, pw.gapopen = 10, pw.gapext = 0.1, gapopen = 10,
  3. gapext = 0.2, exec = NULL, MoreArgs = "", quiet = TRUE, original.ordering = TRUE)
  4. {
  5. os <- Sys.info()[1]
  6. if (is.null(exec)) {
  7. if (os == "Linux")
  8. exec <- "clustalw"
  9. if (os == "Darwin")
  10. exec <- "clustalw2"
  11. if (os == "Windows")
  12. shortPathName("C:/Program Files/ClustalW2/clustalw2.exe")
  13. }
  14. if (missing(x)) {
  15. system(paste(exec, "-help"))
  16. return(invisible(NULL))
  17. }
  18. d <- tempdir()
  19. inf <- paste(d, "input_clustal.fas", sep = "/")
  20. outf <- paste(d, "input_clustal.aln", sep = "/")
  21. write.dna(x, inf, "fasta")
  22. prefix <- c("-INFILE", "-PWGAPOPEN", "-PWGAPEXT", "-GAPOPEN",
  23. "-GAPEXT")
  24. suffix <- c(inf, pw.gapopen, pw.gapext, gapopen, gapext)
  25. opts <- paste(prefix, suffix, sep = "=", collapse = " ")
  26. opts <- paste(opts, MoreArgs)
  27. system(paste(exec, opts), ignore.stdout = quiet)
  28. res <- read.dna(outf, "clustal")
  29. if (original.ordering)
  30. res <- res[labels(x), ]
  31. res
  32. }
  33. <environment: namespace:ape>
复制代码
仔细看了看,发现点问题看这两行
  1. inf <- paste(d, "input_clustal.fas", sep = "/")
  2. outf <- paste(d, "input_clustal.aln", sep = "/")
复制代码
这两行明显的是相似的输出,理论上应该.fas和.aln文件同时输出才对,第二没输出,说明有些程序没运行。、
继续查找原因,发现程序有一行,
  1. shortPathName("C:/Program Files/ClustalW2/clustalw2.exe")
复制代码
这个的意思是要用到C:/Program Files/ClustalW2/clustalw2.exe这个地方的一个exe文件,于是豁然开朗,clustalw是做多序列比对的,一个windows下的文件,如果不自己安装clustalw2怎么会有这个文件呢,找了下c盘的Program Files确实没有。
只好自己安装吧,于是google了下,找到clustalw2的下载地址,这个在ebi有,下载地址如下:
ftp://ftp.ebi.ac.uk/pub/software/clustalw2/2.1
下载里面的clustalw-2.1-win.msi,安装,一路下一步。
安装好之后,发现C:/Program Files下多了个ClustalW2文件夹,然后里面有个ClustalW2.exe文件。
这下好了,工具准备好了。
原理ape包是调用ClustalW2来完成分析的。
最后修改函数,为保险起见用全路径吧(找到你安装ClustalW2.exe的目录,把路径拷贝下来):修改代码如下:
  1. clustal(x,pw.gapopen=10,pw.gapext=0.1,gapopen=10,gapext=0.2,exec=shortPathName("C:/Program Files/ClustalW2/clustalw2.exe"),MoreArgs="",quiet=TRUE)
复制代码
主要是将exec=NILL修改为全路径,也就是将shortPathName重新赋值,即:exec=shortPathName("C:/Program Files/ClustalW2/clustalw2.exe")
然后运行,发现出结果了,一切ok!

下面把例子加测试代码及结果贴出来
测试全部程序:
  1. cat("> No305",
  2. "NTTCGAAAAACACACCCACTACTAAAANTTATCAGTCACT",
  3. "> No304",
  4. "ATTCGAAAAACACACCCACTACTAAAAATTATCAACCACT",
  5. "> No306",
  6. "ATTCGAAAAACACACCCACTACTAAAAATTATCAATCACT",
  7. file = "exdna.txt", sep = "\n")
  8. x<-read.dna("exdna.txt",format="fasta",skip=0,nlines=0,comment.char="#",as.character=FALSE)
  9. clustal(x,pw.gapopen=10,pw.gapext=0.1,gapopen=10,gapext=0.2,exec=shortPathName("C:/Program Files/ClustalW2/clustalw2.exe"),MoreArgs="",quiet=TRUE)
复制代码
运行结果:
  1. > cat("> No305",
  2. + "NTTCGAAAAACACACCCACTACTAAAANTTATCAGTCACT",
  3. + "> No304",
  4. + "ATTCGAAAAACACACCCACTACTAAAAATTATCAACCACT",
  5. + "> No306",
  6. + "ATTCGAAAAACACACCCACTACTAAAAATTATCAATCACT",
  7. + file = "exdna.txt", sep = "\n")
  8. > x<-read.dna("exdna.txt",format="fasta",skip=0,nlines=0,comment.char="#",as.character=FALSE)
  9. > clustal(x,pw.gapopen=10,pw.gapext=0.1,gapopen=10,gapext=0.2,exec=shortPathName("C:/Program Files/ClustalW2/clustalw2.exe"),MoreArgs="",quiet=TRUE)



  10. CLUSTAL 2.1 Multiple Sequence Alignments


  11. Sequence format is Pearson
  12. Sequence 1: No305 40 bp
  13. Sequence 2: No304 40 bp
  14. Sequence 3: No306 40 bp
  15. Start of Pairwise alignments
  16. Aligning...

  17. Sequences (1:2) Aligned. Score: 90
  18. Sequences (1:3) Aligned. Score: 92
  19. Sequences (2:3) Aligned. Score: 97
  20. Guide tree file created: [C:\Users\ADMINI~1\AppData\Local\Temp\RtmpCuvK5E/input_clustal.dnd]

  21. There are 2 groups
  22. Start of Multiple Alignment

  23. Aligning...
  24. Group 1: Sequences: 2 Score:750
  25. Group 2: Sequences: 3 Score:742
  26. Alignment Score 776

  27. CLUSTAL-Alignment file created [C:\Users\ADMINI~1\AppData\Local\Temp\RtmpCuvK5E/input_clustal.aln]

  28. 3 DNA sequences in binary format stored in a matrix.

  29. All sequences of same length: 40

  30. Labels: No305 No304 No306

  31. Base composition:
  32. a c g t
  33. 0.458 0.288 0.034 0.220
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-2-22 09:22:46 | 显示全部楼层
谢谢您如此热情如此细致地帮我解答,非常感谢,以后要多向您学习。
回复

使用道具 举报

发表于 2014-5-17 21:19:28 | 显示全部楼层
snow 发表于 2013-2-21 23:18
我来分享下我的解决过程:
首先分析问题:
看到你的错误,我先下载了ape包,运行read.dna没问题,运行clu ...

哇哦   学习到了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|R语言中文网

GMT+8, 2024-11-25 10:42 , Processed in 0.030681 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表