1

我试图在 Google Cloud Platform 上从 python3 的 Biopython 库运行 clustalw,然后使用 Phylo 库从 .dnd 文件生成系统发育树。

代码在我的本地系统上运行完美,没有错误。但是,当它在 Google Cloud 平台上运行时,会出现以下错误:

python3 clustal.py
Traceback (most recent call last):
  File "clustal.py", line 9, in <module>
    align = AlignIO.read("opuntia.aln", "clustal")
  File "/home/lhcy3w/.local/lib/python3.5/site-packages/Bio/AlignIO/__init__.py", line 435, in read
    first = next(iterator)
  File "/home/lhcy3w/.local/lib/python3.5/site-packages/Bio/AlignIO/__init__.py", line 357, in parse
    with as_handle(handle, 'rU') as fp:
  File "/usr/lib/python3.5/contextlib.py", line 59, in __enter__
    return next(self.gen)
  File "/home/lhcy3w/.local/lib/python3.5/site-packages/Bio/File.py", line 113, in as_handle
    with open(handleish, mode, **kwargs) as fp:
FileNotFoundError: [Errno 2] No such file or directory: 'opuntia.aln'

如果我运行sudo python3 clustal.py,错误将是

  File "clustal.py", line 1, in <module>
    from Bio import AlignIO
ImportError: No module named 'Bio'

如果我以python的交互形式运行它,会发生以下情况

Python 3.5.3 (default, Sep 27 2018, 17:25:39) 
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from Bio.Align.Applications import ClustalwCommandline
>>> in_file = "opuntia.fasta"
>>> clustalw_cline = ClustalwCommandline("/usr/bin/clustalw", infile=in_file)
>>> clustalw_cline()
('\n\n\n CLUSTAL 2.1 Multiple Sequence Alignments\n\n\nSequence format is Pearson\nSequence 1: gi|6273291|gb|AF191665.1|AF191665   902 bp\nSequence 2: gi|6273290|gb
|AF191664.1|AF191664   899 bp\nSequence 3: gi|6273289|gb|AF191663.1|AF191663   899 bp\nSequence 4: gi|6273287|gb|AF191661.1|AF191661   895 bp\nSequence 5: gi|627328
6|gb|AF191660.1|AF191660   893 bp\nSequence 6: gi|6273285|gb|AF191659.1|AF191659   894 bp\nSequence 7: gi|6273284|gb|AF191658.1|AF191658   896 bp\n\n', '\n\nERROR: 
Cannot open output file [opuntia.aln]\n\n\n')

这是我的 clustal.py 文件:

from Bio import AlignIO
from Bio import Phylo
import matplotlib

from Bio.Align.Applications import ClustalwCommandline
in_file = "opuntia.fasta"
clustalw_cline = ClustalwCommandline("/usr/bin/clustalw", infile=in_file)
clustalw_cline()
tree = Phylo.read("opuntia.dnd", "newick")
tree = tree.as_phyloxml()
Phylo.draw(tree)

我只想知道如何在 Google Cloud 平台上创建一个 .aln 和一个 .dnd 文件,因为我可以在我的本地环境中获得。我想这可能是因为我没有权限在服务器上使用 python 创建一个新文件。我已经f = open('test.txt', 'w')在 Google Cloud 上尝试过,但直到我sudo在终端命令(如sudo python3 text.py. 但是,如您所见,对于 clustalw,添加sudo只会使整个 biopython 库丢失。

4

0 回答 0