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'
)
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()
在Ipython笔记本中使用argparse的另一种方法是将字符串传递给:
args = parser.parse_args()
(您引用的git repo的第303行。)可能是这样的:
以及
args = parser.parse_args("AAA --file /path/to/sequences.txt".split())
编辑:有效
我已经有了a similar problem before,,但是使用了
optparse
,而不是argparse
。不需要更改原始脚本中的任何内容,只需将新列表分配给
sys.argv
,如下所示:最后我使用BioPython提取序列,然后编辑Ilya Steanov的实现来删除argparse方法。
对于算法,我让
main()
接受一个参数,他的strings
变量,但这会向算法发送一个特殊的BioPython Sequence objects列表,re模块不喜欢这个列表。所以我必须提取序列字符串到
看起来有点脆,但这就是我现在所拥有的。
相关问题 更多 >
编程相关推荐