最低限 Unix / Linux [II] 【6. 本日の課題】

  1. 事前準備
  1. シェル
  1. テキストエディタ
  1. シェルスクリプト
  1. [付録] データ圧縮・解凍とアーカイブ
  1. 本日の課題
  1. [付録] gnuplotについて
  1. [付録] 位置天文学
情報実験第 3 回トップへ

本日の課題:シェルスクリプトの作成

本日の実習の内容+αを用いて,多数のファイルを一気に処理するためのシェルスクリプトを2つ作成しましょう.本課題では恒星や白色矮星のデータが書かれているファイルを用いることにします.

課題背景

惑星宇宙グループの M 君は,指導教員の K 先生から星のデータを渡され,それを使って HR 図(ヘルツシュプルング・ラッセル図; たとえば,地球惑星科学入門第2版・p368)を作るように頼まれました.K 先生によると,星の種類ごとに色を分けてデータ点を打ってほしいとのことでした.ただし,そのためには,グラフ作成用にデータを整形し,さらに星の種類ごとにデータを分別する必要があります.一方で,まさに星の数ほどあるデータファイルたち(今回は 1345 個)を手作業で処理するのはとても大変です.そこで,あなたのシェルスクリプト技術で星のデータを整形・分別し,M 君を助けてあげてください.

データの概要

本課題で用いるのは,恒星と白色矮星(以後,「星」と呼ぶ)のデータが記された 1345 個のデータファイルで,これらはアーカイブファイル (star2019.tar.gz) にまとめられた状態で配布されます.全てのデータファイルは HIPXXXX.dat (XXXX は 6 桁以下の数字) という形式の名前を持っています.HIPXXXX は星の名前であり,一つのデータファイルが一つの星の情報に対応しています.例えば,HIP91262.dat というデータファイルには,HIP91262 と名づけられた星の情報が書き込まれています.データファイルの中身は8行の文字列や値から成り,上の行から,HIP番号,赤経,赤緯,視等級,星の種類(GS:巨星,MS:主系列星,WD:白色矮星 のいずれか),距離,絶対等級,B-V色指数が書かれています.例えば,HIP91262.dat の中身は次の通りになります:

HIP91262
279.2341083
38.78299311
0.03
MS
25.28503839
0.58
-0.001

データの詳細な意味を理解する必要はありませんが,気になる人は,下の「今回用いたデータについて」を参照したり調べたりしましょう.今回 HR 図を作成するにあたって,これらのデータから横軸をB-V色指数,縦軸を絶対等級にとって作成します.また,星の種類ごとに点の色分けをします.

設問A(データの整形)

M くんは,データファイルをグラフ化しやすくするために,ファイル内の8行のデータを整形し,データを1行にまとめた新たなデータファイルを作ろうと考えました.以下の要請を満たす,新しいデータファイルを作るためのシェルスクリプト(ouranos1.sh)を作成してください.

  1. 作業ディレクトリ "work" を作成し,データファイルが格納されているアーカイブファイルを "work" 内でダウンロード・解凍する.アーカイブファイルの URL は以下である: ダウンロードするには以下をスクリプト内で実行するようにすればよい.
    wget http://www.ep.sci.hokudai.ac.jp/~inex/y2019/0426/practical/kadaidata/star2019.tar.gz
  2. 「反復構造」を用いるなどして,各データファイルに対して8行のデータをシェル変数として読み込み,それらを1行にまとめてファイルへ出力することで新たなデータファイルを作る.
    • このとき,整形後のデータはカンマ(,)で区切り,1列目からHIP番号,赤経,赤緯,視等級,星の種類,距離,絶対等級,B-V色指数とする.
    • HIPXXXX.datのデータを整形して生成した新たなデータファイルの名前は,HIPXXXX.csv とし,"work" 直下に配置する.

設問B(データの分別と作図)

K 先生の要請は,HR 図で星の種類別に色を変えてプロットするというものでした.そこで M くんは,先ほどのデータ整形に加えて星の種類ごとにデータファイルを分別し,HR 図を描画するシェルスクリプトを作ろうと考えました.以下の要請を満たすように,データファイルを分別する機能と HR 図を作成する機能を持つ新しいシェルスクリプト(ouranos2.sh)を作成してください.

  1. 星の種類に対応したディレクトリ "GS" "MS" "WD" を "work" の直下に作成し,「選択構造」を用いるなどして星の種類ごとに整形済みデータファイル (HIPXXXX.csv) を分別して格納する.
  2. ディレクトリ "GS" "MS" "WD" に対して,その中の星のデータをまとめたファイル(まとめファイル)を作る.
    • 「まとめファイル」は,ディレクトリ内の整形済みデータファイル (HIPXXXX.csv) を結合したものとする.すなわち,各行は単一の星に関するデータから成り,1 列目からHIP番号,赤経,赤緯,視等級,光度階級,距離,絶対等級,B-V色指数を記したものとなる.「まとめファイル」内の行の順番(星の並び順)は問わない.
    • 「まとめファイル」の名前は,星の種類ごとに "GS.csv" "MS.csv" "WD.csv" とし,"work" 直下へ配置する.
  3. HR.gpl という描画スクリプトを用いて,3 つのまとめファイルから HR 図 (HR.pdf) を作成せよ.この HR.gpl はグラフ描画ソフトウェア gnuplot(詳細は付録を参照のこと)の描画動作を記述したファイルである.まず,HR.gpl を取得するためにスクリプト内に以下を記述する.
    wget http://www.ep.sci.hokudai.ac.jp/~inex/y2019/0426/practical/kadaidata/HR.gpl
    HR 図 (HR.pdf) を作成するには,HR.gpl を "work" 直下に配置し,そこをカレントディレクトリとしてスクリプト内で以下のコマンドを実行する.
    gnuplot HR.gpl
  4. 作成した HR 図 (HR.pdf) を firefox を用いることで画面に表示せよ.そのためには,スクリプト内で以下のコマンドを記述する.
    firefox HR.pdf
    分別が成功していれば,3色の点群が表示されているはずである.なお,HR.pdf は最終的に "work" の直下に配置されているようにすること.

設問C(HR 図の観察)

作成した HR 図は星の種類ごとに色分けされている.HR 図上でどの種類の星がどこにプロットされているかを確認し,星の種類ごとの分布の特徴を述べよ.作成したまとめファイルやインターネット等を参考にすると良い.回答に当たっては,どのような情報をもとにどのような調査をしたのかも答えること.その他,HR 図やまとめファイルを眺めて,気付いたことや特筆すべきことがあれば,述べること.

提出内容

以下のものを suu に投稿せよ.その際, それぞれ対応するタグを用いること.

  1. シェルスクリプト(タグ : [2019] 3-1. シェルスクリプト本文)
  2. 課題に関するコメント (タグ : [2019] 3-2. 課題に関するコメント)

今回用いたデータについて

今回用いたデータは,ヒッパルコス衛星(詳細はこちら)によるカタログ(ヒッパルコス星表)から,距離が 100 光年以内で,かつ星の種類が良くわかっているものを選び抜いたものです.以下に,データの各部分についての簡単な説明をまとめておきます.

今回は星の種類・絶対等級・B-V色指数のデータしか用いませんでしたが,ほかのデータを用いれば,ほかの図(たとえば星の地図など)も作ることができます.余裕のある人はチャレンジしてみましょう.

注意点

困ったときは

ヒント




<< 戻る (データ圧縮・解凍とアーカイブ)      次へ >> (付録:gnuplotについて)      情報実験 第 3 回 のトップへ >>

最終更新日: 2019/04/24 松岡 亮 copyright © 2019 inex