Eclipse の BIRT を使って科学データをプロットする

BIRT はビジネス・レポート用に作られたものですが、だからといって科学データのプロット用に使えないということはありません。科学用途に BIRT を使う方法を学びましょう。ここでは変光星の光度と年ごとの黒点数という 2 つのプロットを作成します。

Cesar Otero, Consultant, Freelance Consultant

Cesar OteroCesar Otero は Java と Python に関するフリーのコンサルタントです。彼は電気工学の学位を持ち、副専攻は数学です。



2009年 9月 01日

Eclipse の BIRT (Business Intelligence and Reporting Tool) は、その名前からわかるように、ビジネス・レポートを作成するためのツールです。しかし、だからといって BIRT が科学データのプロット用に使えないということはありません。試してみるとわかるように、BIRT は、さまざまなデータ・ソース (SQL やプレーンテキスト・ファイルなど) からの時系列データを素早くプロ並みに 2 次元 (2-D) プロットできる素晴らしいツールなのです。この記事では以下の内容を実行するための方法を説明します。

  • インターネットからデータのソースを見つける
  • プレーンテキスト・ファイルのデータを利用して変光星の光度の時系列プロットを作成する
  • データベースからデータを取得して年ごとの黒点数のプロットを作成する

よく使われる頭字語

  • 2-D: Two-dimensional
  • JAR: Java™ Archive
  • POSIX: Portable Operating System Interface
  • SQL: Structured Query Language
  • URL: Uniform Resource Locator

最近、アポロの月着陸から 40 周年が祝われ、また Eclipse の新しいリリースの名前が Galileo (ガリレオ) であることから、私は宇宙科学に関する何かをプロットしようという誘惑を抑えられませんでした。

データを取得する

どのような種類のデータを視覚化したいかによりますが、データ・ソースの選択肢は無数にあります。例えば、NOAA (National Oceanic and Atmospheric Administration: 米国海洋大気庁)、NAIC (National Astronomy and Ionosphere Center: 米国天文学電離層センター)、EISCAT (European Incoherent Scatter Scientific Association: 欧州非干渉散乱科学協会)、IAU Minor Planet Center (国際天文学連合小惑星センター) などのデータを使用することができます。多くの場合、これらのデータはバイナリー・フォーマットであり、データを抽出するためにサードパーティーのライブラリーが必要な場合があります。この記事では、単純なプレーンテキスト・ファイル形式のデータを使ってプロットを生成する方法を説明します。

ここでは Time Series Data Library のデータを使います。このサイトには無数の分野のデータ・セットが用意されており、そのすべてがテキスト・フォーマットです。


セットアップ

まだ Eclipse をダウンロードしていなければ、まず Eclipse をダウンロードします (「参考文献」を参照)。最新バージョンの Eclipse、つまり Galileo を使用している場合には、いくつかの問題を避けるために新しいワークスペースを作成する必要があります。この記事のレポート・ファイルは最新バージョンの Eclipse と BIRT を使って作成し、テストしましたが、これまでのバージョンを使っても同じレポートを作成できるはずです。BIRT は Eclipse のプラグインであり、以下の依存関係を持っています。

データの取得に関する注意

データは天文台や研究所から提供されるものである必要はありません。例えば政府が発表するデータや過去の気象データでも構いません。提供されるデータには使用にあたっての条件があるかもしれません。そのため、使用許諾条件がある場合には必ずそれを読み、そうした条件に違反しないようにしてください。

  • DTP — Data Tools Platform
  • EMF — Eclipse Modeling Framework
  • GEF — Graphical Editor Framework
  • WTP — Web Tools Platform

幸いなことに、すべてが含まれた一括ダウンロードがあり、その中に Eclipseと、BIRT の依存関係のすべて、そして BIRT そのものが含まれています (「参考文献」を参照)。BIRT を取得してインストールしたら、Eclipse を起動して以下の内容を実行します。

  1. Eclipse メニューから「File (ファイル)」 > 「New (新規)」 > 「Other (その他)」 の順にクリックします。
  2. 表示されるウィンドウで、「Business Intelligence and Reporting Tools (ビジネス・インテリジェンスおよびレポート・ツール)」 > 「Report Project (レポートプロジェクト)」の順にクリックします。
  3. プロジェクトの名前を入力して「OK」をクリックします。この例では「birtPlotting」という名前にします。
  4. ウィンドウが表示され、「Report Design Perspective (レポート・デザイン パースペクティブ)」に切り換えるように促されます。「Yes (はい)」をクリックします。
  5. 「Navigator (ナビゲーター)」タブで「birtPlotting」フォルダーを右クリックし、「New (新規)」 > 「Report (レポート)」の順にクリックします。
  6. 新しいレポートの名前として「starmag.rptdesign」と入力し、「Next (次へ)」をクリックします。
  7. 表示されるウィンドウで「Blank Report (空のレポート)」を選択し、「Finish (完了)」をクリックします。

フラット・ファイルのデータ・ソースを利用して星の光度をプロットする

最初は変光星の光度 (明るさ) の変化をプロットします。ウィキペディアによれば、「地球から見た見かけ上の明るさが時間と共に変化する星は変光星に分類されます。」この記事では、変光星の光度の時間による変化 (具体的には 600 日間にわたって観測されたデータ) を単純に 2 次元 (2-D) プロットします。(このデータ・ファイル starmagnitudetimeseries.ssv は「ダウンロード」セクションで入手することができます。)

棒グラフを作成する

左側の「Palette (パレット)」の「Report Items (レポート項目)」タブをクリックし、そこから「Chart (グラフ)」を「Designer (デザイナー)」にドラッグします。折れ線グラフを使いたいと思うかもしれませんが、棒グラフの方が適切です。データ・ポイントの数が増えると、すべてのデータを表示できるように棒のサイズが小さくなります。「Next (次へ)」をクリックします。

データ・ソースを追加する

データはスペース区切りフォーマット (SSV) です。以下の手順でデータ・ソースを追加します。

  1. 「Use Data From」を選択し、次にドロップダウン・リストから「<New Data Set> (<新規データ・セット>)」を選択します。
  2. 新しいデータ・ソースを追加するように促されたら、「Yes (はい)」をクリックします。
  3. 表示されるウィンドウの中で「Flat File Data Source (フラット・ファイル・データ・ソース)」を選択します。このデータ・ソースに名前を付け、「Next (次へ)」をクリックします。この例では「starMagDataSource」という名前を付けます。
  4. 次のウィンドウでは、「Flatfile Style (フラットファイル・スタイルの選択)」「SSV」を選択します。他の選択肢としては、カンマ区切り (CSV)、パイプ区切り (PSV)、タブ区切り (TSV) があります。
  5. チェックボックス「Use first line as column name indicator (1 行目を列名インジケーターとして使用する)」のチェックを外します。
  6. このステップは実行しなくても構いませんが、「Test Connection (接続のテスト)」をクリックし、BIRT が SSV ファイルを発見できることを確認します。
  7. 「Finish (完了)」をクリックして続けます。

ウィンドウが表示され、データ・ソースを選択するように促されます。先ほど作成したデータ・ソースが「Flat File Data Source (フラット・ファイル・データ・ソース)」の下に表示されているはずです。このデータ・セットに例えば「starMagDataSet」のような名前を付け、「Next (次へ)」をクリックします。その次のページに 2 つのリストがあります。左側のリストはデータ・セットの中にある列を表し、右側のリストはグラフで使用するために選択された列を表します。左側には 1 つの列しかないはずです。その列を選択し、右矢印をクリックします。列名を「magnitude」に変更し、「Integer Type (Integer 型)」を選択し、「Finish (完了)」をクリックします。最後に「OK」をクリックします。

カテゴリー用の整数を作成する

この時点では、棒グラフ・ウィザードに戻っているはずです。以下の手順でカテゴリー用の整数を作成します。

  1. 「Select Data (データの選択)」領域で、カスタムで作成した「starMagDataSet」を選択します。プレビュー領域を見ると、「magnitude」という名前の列と、いくつかの整数値が表示されているはずです。
  2. 「Category(X) Series (カテゴリー系列 (X))」の近くで、関数記号の付いたボタンをクリックして 「Expression Builder (計算式ビルダー)」を呼び出します。
  3. 「Expression Builder (計算式ビルダー)」のウィンドウ「Available Column Bindings (使用可能なカラムバインド)」を選択し、サブカテゴリーとして「Chart (グラフ)」を選択します。
  4. 「RowNum」をダブルクリックします。
  5. エディターの中に「row.__rownum」が表示されているはずです。「OK」をクリックします。

同じ手順を「Y Series (値系列 (Y))」に対して繰り返しますが、この場合は「RowNum」ではなく「magnitude」をダブルクリックします。

グラフをカスタマイズする

オプションとして、少しグラフの見栄えを良くするために、「Format Chart (グラフの書式設定)」タブをクリックします。ここでは、グラフのタイトルの変更、右側にある凡例の削除、X 軸と Y 軸のタイトルの変更、色の変更、さらにはプロットのスケールの変更まで行うことができます。例えば、デフォルトのスケールはリニアですが、対数スケールに変更することもできます。このプロットでは、タイトルを「Variable Star Magnitude Time Series (変光星光度の時系列)」にします。X 軸の「Title (タイトル)」を「Period (nights)」に、Y 軸の「Title (タイトル)」を「Magnitude」にします。それが終わったら「Finish (完了)」をクリックします。

「Report Designer (レポート・デザイナー)」で、グラフ・オブジェクトをレポートの幅いっぱいに拡大し、高さは 3 インチを少し超える程度にします。このプロットのプレビューを表示するためには、「Preview (プレビュー)」タブをクリックするか、あるいはメニューから「Page (ページ)」 > 「Preview (プレビュー)」の順にクリックします。

600 日間のすべてのデータがグラフ上にあるわけではないことに気付くと思います。プロットの先頭には、「Note: Current maximum number of data rows is..., (注: データ行の現在の最大数は・・・)」のような表示と、それに続いて「(Click to change Preview Preferences (注: プレビューの設定を変更するにはクリックしてください))」のような表示があります。このメッセージをクリックし、それによって開かれるウィンドウで「No limits of the number of rows to display (表示する行数を制限しない)」をクリックし、「OK」をクリックします。するとページ・ビューを更新するように促されるので、「Yes (はい)」をクリックします。これで 600 個のポイントがすべてプロットに表示されるはずです。図 1 は最終的なグラフを示しています。

時系列

時系列 (time series) というのは周期的に測定されたデータ・ポイント列です。

図 1. 変光星の光度の時系列
変光星の光度の時系列

このプロットを保存するためには、「Run (実行)」 > 「View Report (レポートの表示)」 > 「As PDF (PDF として)」の順にクリックするか、あるいはグラフをプレビューするための何れかの書式をクリックします。そしてディスクに保存します。


データベースを使って黒点の数をプロットする

次のプロットでは、リレーショナル・データベースにデータを入力し、レポートを作成し、Java 技術のプログラムを使って最終的なグラフを生成します。ここでは選択された期間内の黒点の数をプロットします。

まず、H2 データベースをダウンロードします (「参考文献」を参照)。H2 は Pure Java で実装された小規模なデータベースです。ダウンロードしたらファイルを解凍し、「bin」ディレクトリーまでナビゲートします。「bin」ディレクトリーには、「h2-<バージョン番号>」という名前の JAR ファイルがあるはずです (私のマシンの場合は、「h2-1.1.114.jar」です)。「java -jar h2-1.1.114.jar」と入力するか、.sh ファイルまたは .bat ファイルを実行します (これは実行中のマシンが POSIX マシンであるか Windows® マシンであるかに依存します)。

これでサーバーが実行されるようになったので、このサーバーにデータを追加します。必要な黒点データは「ダウンロード」セクションからダウンロードしたファイルの中にあります。コンソールで「Tools (ツール)」 > 「Run Script (スクリプトの実行)」の順にクリックします。「Target Database URL (ターゲットデータベース URL)」フィールドに「jdbc:h2:~/sunspots.db」と入力します。このデータベースはまだ存在していないため、このデータベースを H2 が作成してくれます。「Source Script File Name (ソーススクリプトファイル名)」フィールドに sunspots.sql ファイルへのフル・パスを入力し、「Run (実行)」をクリックします。

Eclipse に戻って以下の内容を実行します。

  1. 「birtPlotting」プロジェクトを右クリックし、「New (新規)」 > 「Report (レポート)」をクリックします。
  2. 新しいレポートの名前を「sunspots.rptdesign」に変更し、「Finish (完了)」をクリックします。データ・ソースとデータ・セットを追加するには、先ほど説明した方法以外にも、メニューを使って追加する方法があります。
  3. メニュー・バーから「Data (データ)」 > 「New Data Source (新規データ・ソース)」の順にクリックします。
  4. 表示されるウィンドウの中で、「JDBC Data Source (JDBC データ・ソース)」を選択し、このデータ・ソースに名前を付け、「Next (次へ)」をクリックします。
  5. 「Manage Drivers (ドライバーの管理)」をクリックし、続いて「Add (追加)」をクリックすることで H2 jdbc ドライバーを追加します。
  6. ファイルを選択する画面の中で H2 システムまでナビゲートします。「h2 JAR」ファイルを選択し、「OK」をクリックします。すると H2 jdbc が「Driver Class (ドライバー・クラス)」のドロップ・ダウン・リストに表示されるはずです。
  7. H2 jdbc ドライバーを選択し、ドライバーの URL として「jdbc:h2:/path/to/sunspot.db」と入力します。
  8. 「User Name (ユーザー名)」フィールドに「sa」と入力します。
  9. 「Test Connection (接続テスト)」をクリックして Eclipse が sunspot データベースを見つけられることを確認し、「Finish (完了)」をクリックします。先ほどと同じように、これでデータ・ソースが得られたので、今度はデータ・セットが必要です。
  10. メニュー・バーから「Data (データ)」 > 「New Data Set (新規データ・セット)」 > 「New Data Set (新規データ・セット)」の順にクリックします。
  11. 「New Data Set (新規データ・セット)」ウィンドウの中で、先ほど作成した「sunspot」データ・ソースを選択し、このデータ・セットを「SQL Select Query (SQL Select クエリー)」に設定し、名前を入力し、「Next (次へ)」をクリックします。
  12. クエリー・テキストの領域に下記のクエリーを入力し、「Finish (完了)」をクリックします。
    select * from sunspots where year between 1900 and 1980;

ここで、新規のグラフ・オブジェクトをレイアウトまでドラッグします。この場合も棒グラフを使います。「Chart (グラフ)」ウィンドウで「Next (次へ)」をクリックします。「Use Data From」オプションを選択してから、「sunSpotsDataSet」を選択します。「Category(X) Series (カテゴリー系列 (X))」で、「Expression Builder (計算式ビルダー)」ボタンをクリックし、「Available Column Bindings (使用可能なカラムバインド)」 > 「Chart (グラフ)」の順に選択し、「YEAR (年)」をダブルクリックします。「OK」をクリックします。

次に「Y Series (値系列 (Y))」で、「Expression Builder (計算式ビルダー)」を呼び出します。「Available Column Bindings (使用可能なカラムバインド)」 > 「Chart (グラフ)」の順に選択し、「NUM」をダブルクリックし、「OK」をクリックします。望んでいるフォーマットに変更し、「Finish (完了)」をクリックします。プロットのプレビューを見ると、非常に見やすい時系列になっています。最初に気付くことは、黒点の数が下記のように一定の周期に従っていることです (見事なものだと思いませんか)。

図 2. 年ごとの黒点数のプロット
年ごとの黒点数のプロット

データベースの中にデータがあることによる明らかなメリットとして、クエリーによってデータを操作することができます。クエリーを「select * from sunspots」に変更すると、すべてのデータを表示することができます。


まとめ

この記事では、ビジネス・インテリジェンス・ツールを使って科学データのレポートを作成する方法を説明しました。優れた品質で素早く視覚化するために高価なプラットフォームを購入する必要はありません。この記事のポイントは、このビジネス・ツールが元々の目的とは異なる目的に使用できることを示すことです。ここで説明した内容は他のタイプのデータにも容易に適用することができます。


ダウンロード

内容ファイル名サイズ
SSV and SQL data sourcesos-eclipse-scala-Converter.zip2KB

参考文献

学ぶために

製品や技術を入手するために

議論するために

  • Eclipse に関する質問を議論するための最初の場所として、Eclipse Platform newsgroups があります (このリンクをクリックすると、デフォルトの Usenet ニュース・リーダー・アプリケーションが起動し、eclipse.platform が開きます)。
  • Eclipse newsgroupsには、Eclipse を利用し、拡張することに関心を持つ人達のために、さまざまなリソースが用意されています。
  • developerWorks blogs から developerWorks のコミュニティーに加わってください。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Open source
ArticleID=432942
ArticleTitle=Eclipse の BIRT を使って科学データをプロットする
publish-date=09012009