2016-10-04 11 views
-1

Lancetは、パラメータスペースを探索するためのPythonライブラリです。ジョブを起動し、出力を整理し、結果を分析することができます。ShellCommandがLancentライブラリで実行できるpython関数の記述方法は?

私は実行するために、ドキュメントhereで、トラブルクイックスタートの例を取得することです。これはコードです:

import lancet 
example_name = 'prime_quintuplet' 
integers  = lancet.Range('integer', 100, 115, steps=16, fp_precision=0) 
factor_cmd  = lancet.ShellCommand(executable='python factor.py', posargs=['integer']) 
lancet.Launcher(example_name, integers, factor_cmd, output_directory='output')() 
def load_factors(filename): 
    "Return output of 'factor' command as dictionary of factors." 
    with open(filename, 'r') as f: 
     factor_list = f.read().replace(':', '').split() 
    return dict(enumerate(int(el) for el in factor_list)) 

output_files = lancet.FilePattern('filename', './output/*-prime*/streams/*.o*') 
output_factors = lancet.FileInfo(output_files, 'filename', 
           lancet.CustomFile(metadata_fn=load_factors)) 
primes = sorted(factors[0] for factors in output_factors.specs 
            if factors[0]==factors[1]) # i.e. if the input integer is the 1st factor 
primes # A prime quintuplet, the closest admissable constellation of 5 primes. 

私はこの問題は、私がのSHELLCOMMAND機能がどのように機能するかを理解していないということであると信じています。

私は「factor.py」という名前のファイルを書き込み、クイックスタートの例と同じdirrectoryにそれを置くことを試みました。

import argparse 

def factor(): 
    ''' Returns an arbitrary list for testing. Not really a factor command''' 
    parser = argparse.ArgumentParser() 
    parser.add_argument("num1",help="Number to factor",type=int) 
    args = parser.parse_args() 
    return [args.num1, 2*args.num1, 1, 3] 

私はエラーを取得する:

ラインにスローされます
FileNotFoundError: [Errno 2] No such file or directory: 'python factor.py' 

lancet.Launcher(example_name, integers, factor_cmd, output_directory='output')() 

私はJupyterノートブックに事前に

おかげでPythonの3.4.5を使用していますどんな助けでも!

+0

それはあなたが、私が見つけたこのランダムライブラリのすべてのドキュメントを読んで、小さな言葉で私にそれらを説明してください」*以外の求めているまさに不明です。ああ、ところで、私はPythonも知らない」 – MattDMo

答えて

0

私はサンプルコードをコピーし、実行ファイル名をfactor.pyの絶対パスに変更するのを忘れてしまいました。私のコンピュータ上で

それは次のようになります。

factor_cmd  = lancet.ShellCommand(executable='/Users/klm/Devel/factor.py', posargs=['integer']) 
関連する問題