如何调用iPython笔记本中用argparse编写的模块

2024-06-25 06:55:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在iPython的笔记本环境中将BioPython序列传递给Ilya Stepanov's implementation of Ukkonen's suffix tree algorithm。我在argparse组件上遇到了问题

我以前从未直接与argparse打过交道。如何在不重写main()的情况下使用它

通过,通过,this writeup of Ukkonen's algorithm is fantastic


Tags: oftree环境ipythonargparse笔记本序列algorithm
3条回答

使用args = parser.parse_args(args=[])可以解决执行问题

或者,如果您想以类格式管理参数,可以按如下方式声明它

class Args:
  data = './data/penn'
  model = 'LSTM'
  emsize = 200
  nhid = 200

args=Args()

Github page repo提供了转换web服务http://35.192.144.192:8000/arg2cls.html

我有a similar problem before,,但是用optparse代替了argparse

您不需要更改原始脚本中的任何内容,只需为sys.argv分配一个新列表,如下所示:

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回购协议第303行。)

大概是这样的:

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'
    )

args = parser.parse_args("AAA --file /path/to/sequences.txt".split())

编辑:它起作用了

相关问题 更多 >