2013-03-26 6 views
13

データセットを解析するipythonノートブックを作成しました。今私は、このコードを使用して別のデータセットをループしたいと考えています。ループ内のipythonノートを実行する/入力パラメータが異なる

コードは約50個のセルに分割されています(コメント、マークダウンの説明など)。ノートブックの一部をループで実行する方法や、異なる入力パラメータを持つノートブック全体を実行する方法はありますか?

すべてのセルを1つの関数にマージしたり、Pythonスクリプトとしてコードをダウンロードしたりする必要はありません。特定のセルだけを実行して解析の部分を実行したいと思っています。

基本的に関数のスクリプトのリファクタリング部分とループの関数を呼び出すだけで、 "スクリプトの部分"はノート型のセルです。

答えて

15

これらのシナリオで通常行うことは、重要なセルを関数としてラップすることです(それらのいずれかをマージする必要はありません)。パラメータのリストを繰り返し処理してこれらの関数を呼び出す特定のマスターセルがあります。例えば。これは、「マスターセル」は、私のノートPCのいずれかで、次のようになります。

import itertools 
# parameters 
P_peak_all = [100, 200] 
idle_ratio_all = [0., 0.3, 0.6] 
# iterate through these parameters and call the notebook's logic 
for P_peak, idle_ratio in itertools.product(P_peak_all, idle_ratio_all): 
    print(P_peak, idle_ratio, P_peak*idle_ratio) 
    print('========================') 
    m_synth, m_synth_ns = build_synth_measurement(P_peak, idle_ratio) 
    compare_measurements(m_synth, m_synth_ns, "Peak pauser", "No scheduler", file_note="-%d-%d" % (P_peak, int(idle_ratio*100))) 

あなたがまだあることをノートブック(すなわち、あなたのデータを持つセルの下部に各機能を呼び出す)を通じてドラッグいくつかのデータを持つことができます個々の細胞のために生き物をテストすることができます。たとえば、いくつかのセルは次のような状態になることがあります。

def square(x): 
    y = x**2 
    return y 
square(x) # where x is your data running from the prior cells 

これは、生き残りを試しても、マスターセルの汎用機能を呼び出すことができます。

ノートブックの機能を使用してノートブックをリファクタリングする追加の作業があることはわかっていますが、ノートブックの読みやすさが実際に向上することがわかりました。スクリプトまたはモジュールを必要に応じて作成します。

+0

明確にするために、セルを関数に変換することを意味しますか?面白い... +1 – Amyunimus

+0

正確に。おそらく、すべてのセルではなく、後で使用されるデータを実際に変更するセルで行う必要があります。いくつかのセルでは、たぶん "一回限りの"データの探索と可視化を行うだけです。 – metakermit

+2

作業の一部を行うことができる「機能するセル」拡張もあります。このノートブックノートを参照してください:http://nbviewer.ipython.org/github/takluyver/cell2function/blob/master/Cell2function%20demo.ipynb –

関連する問題