
Headergenは、ノートブックに物語構造を自動的に作成することにより、文書化されていないPythonベースのJupyterノートブックの理解とナビゲーションを強化するためのツールベースのアプローチです。
データサイエンティストは、最初にデータを準備し、次に重要な機能を抽出し、モデルを作成およびトレーニングすることにより、MLベースのソリューションノートブックを構築します。 Headergenは、MLノートブックの暗黙の物語構造を活用して、ノートブックへの注釈として構造ヘッダーを追加します。

pip install headergen
自動化されたマークダウンヘッダー挿入:マシンラーニング操作の分類法により、ヘッドゲンはコードセルに関連するマークダウンヘッダーと注釈を付けます。
関数呼び出し分類法:機械学習操作の分類に基づいて、機能呼び出しを系統的に分類します。
高度なコールグラフ分析:フロー感度と外部ライブラリリターンタイプの解像度でPYCGフレームワークを強化します。
外部ライブラリの精度: Typestubsを使用して外部ライブラリから機能リターンタイプを正確に解決する機能。
構文パターンマッチング:パターンマッチングにタイプデータを使用します。
generate :現在のディレクトリにHeadergen注釈付きノートブックを生成します。キャッシュが初めてヘッドゲンが実行されるときに作成されることに注意してください。
headergen generate -i /path/to/input.ipynbさまざまな分析情報を含むJSONメタデータファイルを生成し、-json_outputまたは-jフラグを使用します。
headergen generate -i /path/to/input.ipynb -o /path/to/output/ -jtypesコマンド:ファイルでタイプの推論を実行し、タイプ情報を取得します。
headergen types -i /path/to/input.ipynbタイプ情報を使用してJSONファイルを生成し、-json_outputまたは-jフラグを使用します。
headergen types -i /path/to/input.ipynb -o /path/to/output/ -jserverコマンド:サーバーの起動は簡単です:
headergen server
これにより、Host 0.0.0.0とポート54068で聴取するUvicornサーバーが開始されます。
このエンドポイントは、cell_callsitesやblock_mappingなどの分析データを含むJSON応答として、指定されたノートブックまたはPythonスクリプトの分析を返します。
カールを使用した例:
curl "http://0.0.0.0:54068/get_analysis_notebook?file_path=/absolute/path/to/your/file.ipynb"
このエンドポイントは、指定されたノートブックまたはPythonスクリプトのタイプ情報をJSON応答として返します。
カールを使用した例:
curl "http://0.0.0.0:54068/get_types?file_path=/absolute/path/to/your/file.ipynb"
このエンドポイントは、分析に基づいて注釈付きノートブックを返します。応答はファイルのダウンロードになります。
カールを使用した例:
curl "http://0.0.0.0:54068/generate_annotated_notebook?file_path=/absolute/path/to/your/file.ipynb" --output annotated_file.ipynb
callsites-jupyternb-micro-benchmark :マイクロベンチマークcallsites-jupyternb-real-world-benchmark :実世界のベンチマークevaluation :マニュアルヘッダーの注釈とユーザー学習結果が含まれていますframework_models :ml分類マッピングへの関数呼び出しtypestub-database :MLライブラリ用のタイプSTBheadergen :ヘッドゲンのソースコードpycg_extended :拡張PYCGのソースコードheadergen-extension :HG用のJupyterノートブックプラグインheadergen_output :dockerコンテナから生成されたノートブックが保存されているフォルダーソースファイルを取得します
git clone --recursive
git submodule update --init --recursive
git pull --recurse-submodules
Linux
docker build -t headergen .
docker run -v {$PWD}/headergen_output:/headergen_output -it headergen bash
Windows
docker build -t headergen .
docker run -v "%cd%"/headergen_output:/headergen_output -it headergen bash
注釈付きノートブック、レポート、コールサイト、ヘッダーなど、次のコマンドから生成された出力は、次のコマンドが実行された後、ローカルフォルダーheadergen_outputに保存されます。
マイクロベンチマーク(結果を伴うCSVファイルを生成)
make ROOT_PATH=/app/HeaderGen microbench
実世界のベンチマーク(表2を再現する注釈付きノートブックとCSVファイルを生成)
make ROOT_PATH=/app/HeaderGen realworldbench
両方のベンチマーク
make ROOT_PATH=/app/HeaderGen all
クリーン生成出力
make clean
ソースファイルを取得します
git clone --recursive
git submodule update --init --recursive
git pull --recurse-submodules
存在する場合はキャッシュをクリアします
rm framework_models/models_cache.pickle
rm pycg_extended/machinery/pytd_cache.pickle
setup.shスクリプトを使用したvenvおよび依存関係をセットアップします
./setup.sh -i
マイクロベンチマーク(結果を伴うCSVファイルを生成)
make ROOT_PATH=<path to repo root> microbench
実世界のベンチマーク(表2を再現する注釈付きノートブックとCSVファイルを生成)
make ROOT_PATH=<path to repo root> realworldbench
両方のベンチマーク
make ROOT_PATH=<path to repo root> all
クリーン生成出力
make clean
このレポは、Saner Conference 2023で公開された、静的分析を備えたJupyterノートブックの理解とナビゲーションの強化」用紙のコードが含まれています。