if __name__ == "__main__":
from Bio import SeqIO
path = '/path/to/sequences.txt'
sequences = [str(record.seq) for record in SeqIO.parse(path, 'fasta')]
sys.argv = ['-f'] + sequences
main()
parser = argparse.ArgumentParser(
description='Searching longest common substring. '
'Uses Ukkonen\'s suffix tree algorithm and generalized suffix tree. '
'Written by Ilya Stepanov (c) 2013')
parser.add_argument(
'strings',
metavar='STRING',
nargs='*',
help='String for searching',
)
parser.add_argument(
'-f',
'--file',
help='Path for input file. First line should contain number of lines to search in'
)
9条答案
按热度按时间i1icjdpr1#
我以前也遇到过类似的问题,但是使用
optparse
而不是argparse
.您不需要更改原始脚本中的任何内容,只需将新列表分配给
sys.argv
像这样:h7wcgrx32#
在ipython笔记本中使用argparse的另一种方法是将字符串传递给:
args = parser.parse_args()
(您引用的git repo的第303行。)可能是这样的:
以及
args = parser.parse_args("AAA --file /path/to/sequences.txt".split())
编辑:可以5t7ly7z53#
使用
args = parser.parse_args(args=[])
可以解决执行问题,如果您想管理类格式的参数,下面的脚本可以转换。
github-page-repo提供了转换web服务。http://35.192.144.192:8000/arg2cls.html
我希望这对你的测试有帮助。1月9日19日许多错误被修复。
转换脚本。python3是必需的。
然后复制粘贴类格式以替换argparse函数。
yr9zkbsy4#
如果所有参数都有默认值,那么将其添加到笔记本顶部就足够了:
(否则,只需添加必要的参数,而不是空字符串)
ekqde3dh5#
最后,我使用biopython来提取序列,然后编辑ilyasteanov的实现来删除argparse方法。
对于算法,我有
main()
拿一个论点来说,他的strings
变量,但这会向算法发送一列特殊的biopython序列对象,re模块不喜欢这些对象。所以我必须提取序列字符串到
这看起来有点脆弱,但这就是我现在所拥有的。
rbl8hiat6#
我在调用argsparse时遇到了类似的问题,字符串'-f'导致了这个问题。把它从sys.srgv中去掉就行了。
sf6xfgos7#
清洁
sys.argv
```import sys; sys.argv=['']; del sys
zxlwwiss8#
这是我的代码,运行良好,我不会担心环境的变化。
vhmi4jdf9#
如果您不想更改已编写或复制的原始argparse函数的任何参数和工作机制。
为了让程序正常工作,有一个简单的解决方案,它在大多数情况下都是有效的。
你可以安装
jupyter-argparser
使用以下命令:多亏了软件包的维护人员,代码可以正常工作而没有任何变化。