はじめに
Jupyter NotebookやJupyter Labでは、長時間かかる処理の進捗状況を視覚的に表示することが重要です。ipywidgetsライブラリのIntProgressウィジェットを使用すると、シンプルで直感的なプログレスバーを実装できます。
コード

解説
モジュールのインポートなど
このコードはJupyter Lab 2.0.1で実行しました。Jupyter Labでインタラクティブな操作を行うに、%matplotlib widgetを設定します。
動画の読み込みとメタデータ
下記記事の動画を読み込み、メタデータを表示します。これにより、フレーム数が300であることが確認できます。

[matplotlib animation] 75. テンプレートマッチングによる物体追跡でジャンプした回数を計測
scikit-imageのテンプレートマッチングによる物体追跡により、対象物がジャンプした回数を動画解析し、matplotlib, FuncAnimationのアニメーションで表示する。
ipywidgetsの設定
IntProgressを使用してプログレスバーを表示します。minからmaxの値に応じてバーの長さが動的に変化し、処理の進行状況を視覚的に表現します。
IntProgressの主なパラメータ
パラメータ | 説明 | 選択肢/型 |
---|---|---|
value | 現在の値 | 整数 |
min | 最小値 | 整数 |
max | 最大値 | 整数 |
description | 表示するラベル | 文字列 |
bar_style | バーのスタイル | ‘success’, ‘info’, ‘warning’, ‘danger’, ” |
orientation | バーの向き | ‘horizontal’, ‘vertical’ |
layout | レイアウト設定 | Layout() |
動画から画像への変換の実行とプログレスバー
画像をひとつリストに追加するたびにプログレスバーの値を1ずつ増加させることで、処理の進行状況をリアルタイムに確認できます。

まとめ
ipywidgetsのIntProgressを使用することで、Jupyter環境での長時間処理の進捗状況を視覚的に表示できます。これにより、ユーザーは処理の完了を待つ間も状況を把握できるため、特に大規模なデータ処理や長時間の計算処理に非常に有用です。
プログレスバーはシンプルながらも、ユーザビリティを大きく向上させる機能です。他のipywidgetsと組み合わせることで、より対話的で情報量の多いインターフェースを構築することができます。
参考
Widget List — Jupyter Widgets 8.1.7 documentation
コメント