ASCIIデータからNtupleへの変換

1996年9月3日 中村達郎

1. 前書き

PAWではNtupleという形式のデータをよく使います。Ntupleは2次元の表のような 形式のデータです。ASCIIで書かれた数値データ表(テキストファイル)をPAWで扱 えるようにNtupleに変換するコマンドを作りました。

2. 動作環境  

今のところahsadでのみ使えます。コマンドは /usr/local/bin/ にあります。 コマンドパスを設定しておくか、/usr/local/bin/a2cwn などのようにパスを明示 して使うかしてください。

3. 変換コマンドの使い方  

NtupleにはRWN(Row Wise Ntuple)と CWN(Column Wise Ntuple)の2種類があ ります。変換コマンドはそれに対応して a2rwn、a2cwn の2つを用意しました。 一般的にはCWNを使う方が良いでしょう。 コマンドは次の例のように使います。(コマンドパスの設定がされている場合。)

a2rwn data.ascii data.ntp

または、   

a2cwn data.ascii data.ntp

この例では、data.ascii という名前のファイルがASCIIで書かれた元のデータで、 変換によって作られるファイルは data.ntp という名前にしています。

 変換によって作られるファイルは zebra の RZ file という形式のもので、1つ のファイルに複数個のNtupleを含むことができます。しかし、この変換コマンドで は、1度に1つのNtupleのみを変換するため、Ntupleを1つだけ含んだファイルがで きます。変換されたNtupleのIDは 1 になります。

4. ASCIIデータの形式  

変換元のファイルの形式は、数値(10進)を2次元的に並べたものになります。 例として、

1 12 34.5
2 -6 0.423
3 119 1.871E-9
4 0 2900E+12

という具合です。行が Ntuple の row に、列が Ntuple の column に対応します。 1行の中の各列は空白で区切ります。複数個の連続する空白は1つの空白と同じにみ なされます。行の先頭や末尾に余分な空白があっても構いません。 1行の中の列の数は全ての行で一致していなければいけません。  columnに名前を付けることができます。それには最初の行にcolumnの名前を空白 で区切って並べた行を置きます。(空白の使い方は数値の場合と同じ。)例として、

Number Position Value
1 12 34.5
2 -6 0.423
3 119 1.871E-9
4 0 2900E+12

という具合です。columnの名前の数は、数値データの列の数と丁度同じでなければ いけません。columnの名前には英字、数字、“_”(アンダースコア)が使えます。 但し、先頭に数字は使えません。PAWでは大小文字は区別されません。名前の長さ は、a2rwn で RWN に変換する場合は8文字まで、a2cwn で CWN に変換する場合は 32文字までです。 columnの名前を指定しない場合は、DATA1、DATA2、DATA3、.... という名前が自動 的に付けられます。  最初の文字を“*”にした行は、注釈とみなされます。但し、注釈行は数値デー タの行より前にのみ許されます。例として、

* This is sample file.
* 1996.9.2 Number Position Value
* This line is the last comment.
1 12 34.5 2 -6 0.423 3 119 1.871E-9 4 0 2900E+12

という具合です。

5. 空白以外の区切りを使いたい時  

表計算ソフトのデータをASCIIで書き出してNtupleに変換したい時などは、区切 りに“,”(コンマ)やタブコードを使えると便利なことがあります。それには、 コマンドの第3引数に -c や -t オプションを指定します。 -c を指定すると“,”を全て空白に変換した後 Ntuple への変換をします。 -t を指定するとタブコードを全て空白に変換した後 Ntuple への変換をします。 例として、次のようにします。   

a2cwn data.ascii data.ntp -c

これらのオプションを指定すると一時的に中間ファイル(変換元ファイル名の後ろ に“_ntp_000”を付けた名前になる。)を作りますので注意してください。

6. 備考  

以上