これは旧バージョンのマニュアルです

pulse_searcher の使い方

pulse_searcher は、指定した範囲の DM (dispersion measure) で de-dispersion を行いパルスを探査するソフトで、FRB (fast radio burst) や GRP (giant radio pulse) の検出に利用できます。 パルサーの本格的解析に必要な folding や accleration 補正などはできません。 また FRB の検出はできるものの、時間がかかりすぎて実用的ではありません。

  1. インストール
  2. 解析設定ファイルの作成
  3. 実行

インストール

ホームディレクトリなど適当な場所にワークスペース (e.g., /home/USER/pulsar) を作っておくことをおすすめします。 USER は自身のユーザー名に読み替えてください。

$ mkdir /home/USER/pulsar

適当なディレクトリにソフトをダウンロードし、実行権限を与え、実行してください。

$ wget http://astro.sci.yamaguchi-u.ac.jp/t-aoki/tools/pulse_searcher/pulse_searcher_cent7gnome.install
$ chmod 555 pulse_searcher_cent7gnome.install
$ ./pulse_searcher_cent7gnome.install

少し時間がかかるかもしれませんが以下のような画面が表示されるはずなので、指示に沿ってインストールしてください。 インストール先ディレクトリは先に作成したワークスペースを指定すると良いと思います。

MATLAB Runtimeもインストールします。インストール先ディレクトリをユーザーのワークスペースにして大丈夫です。

これですべてのファイルはワークスペース /home/USER/pulsar 以下に入ったはずです。

解析設定ファイル

下記の情報を記したテキストファイル crab-6g.conf (6GHz用) と crab-8g.conf (8GHz用) を用意してください。 ファイル名は任意ですが、ターゲットと観測周波数を入れておくとわかりやすいです。

$ vi crab-6g.conf

# Set Dispersion Measure.
# In the program, there is a loop such as for(dm = min; dm <= max; dm += step).
survey_DM_pc_per_cm3_min  56.7450
survey_DM_pc_per_cm3_max  56.7450
survey_DM_pc_per_cm3_step 56.7450

# Set FFT Window Width in milli-second.
fft_width_ms_desired 100

# Set Width of Short Time Fourier Transform in mili-second,
# relating to a data size transferred to a GPU at once.
# e.g., 10 ms
stft_width_ms_desired 100

# Set Integration Time in micro-second.
# e.g., 2 us. If 0 then no integration.
integration_time_us_desired 2

# Set Signal-to-Noise Ratio Threshold for Pulse Detection.
snr_threshold 7

# Set File for Band Calibration.
bandchar_file     ~/ymg32cr_band.txt

# Set Observation Parameters.
sampling_freq_MHz 1024 # 1024 mega-sample/s
adc_RF_min_MHz    6600 # Minimum RF/MHz of the A/D converted band; e.g., 6600 or 8192.
eff_RF_min_MHz    6606 # Minimum RF/MHz of the effective band for analysis; e.g, 6606 or 8198.
eff_RF_max_MHz    7106 # Maximum RF/MHz of the effective band for analysis; e.g, 7106 or 8698.
band_inverted     true # 'true' when inverted by Higher Order Sampling, or 'false'
datum_size_bit    2
data_format       ADS1K # Linear1B, ADS1K (= ADS3KP_VSISEL11 via OCTAVIA)
use_gpu           true # true or false
save_images       true # true or false
partition_width_byte 256000000 # Data size/B loaded from a file at once.

各パラメータの意味はおおよそ予想できるかと思います。要点だけ列挙すると下記の通りです。

実行

pulse_searcher は三つの引数を取り、例えば次のように実行します。

$ ./pulse_searcher 20180102_030000_hit32cr_crab.raw crab-6g.conf /home/USER/pulsar

各引数は次の通りです。

第一引数 = データファイル (20180102_030000_hit32cr_crab.raw)
データファイル名は YYYYMMDD_hhmmss_(any).(any) という書式とし、そのファイルのデータの記録開始時刻 YYYY/MM/DD hh:mm:ss UTC を示す必要があります。文字列 any は任意で、上記例の hit32cr_crab は Hitachi32m C-band RHCP による Crab pulsar のデータであることを示しています。
第二引数 = 解析設定ファイル (crab-6g.conf)
記載内容は当該セクションをご覧ください。
第三引数 = 出力先ディレクトリ (/home/USER/pulsar)
ファイルを出力するディレクトリをフルパスで指定します。ディレクトリへの書き込み権限に注意してください。

ただし上記のように実行できるのはシステムにMATLAB環境変数を設定している場合です。 あまり使わない環境変数をシステムに設定するのは利口ではないので、環境変数を含めたスクリプト pulse_searcher_interface.sh を用意しました。 環境変数をシステムに設定する場合は ~/.bashrc に下記の該当変数を書き込んで export してください。

$ vi pulse_searcher_interface.sh

#!/bin/bash
set -u
LANG=C

# MATLAB Environment
# mcr_root = the absolute path of the directory where the MATLAB Runtime is installed.
# version  = the version of the MATLAB Runtime
mcr_root=/home/USER/pulsar/MATLAB/MATLAB_Runtime
version=v94
export LD_LIBRARY_PATH=${mcr_root}/${version}/runtime/glnxa64:${mcr_root}/${version}/bin/glnxa64:${mcr_root}/${version}/sys/os/glnxa64:${mcr_root}/${version}/sys/opengl/lib/glnxa64

execut=/home/USER/pulsar/pulse_searcher/application/pulse_searcher
outdir=/home/USER/pulsar

###
### EDIT BELOW
###
datadir=/mnt/raid/u18002
config=/home/USER/pulsar/crab-6g.conf

${execut} ${datadir}/20180102_030000_hit32cr_crab.raw ${config} ${outdir}
${execut} ${datadir}/20180102_040000_hit32cr_crab.raw ${config} ${outdir}
${execut} ${datadir}/20180102_050000_hit32cr_crab.raw ${config} ${outdir}

exit 0


$ chmod 755 pulse_searcher_interface.sh

解析のたびに修正すべき変数は下記の通りです。

スクリプトを編集したら実行してください。 GPUパワーに大きく依存しますが、解析時間は観測時間の10倍と思ってください。

$ ./pulse_searcher_interface.sh

出力ファイルについて

出力ファイルは以下の四種類です。

*.log
解析ログファイル
*_dd.sh
入力データファイルから、パルスのデータ領域のみを抽出するスクリプト (実体は Linux コマンド dd を列挙しただけ)。
スクリプト中の COUNT の値で抽出範囲を指定可能。bs=256000 としているので、1024 MS/s, 2 bit/S (= 256 000 000 B/s) のデータの場合 bs = 1 ms であり、COUNT の単位は ms となります。
*_pulses.csv
検出されたパルスのリスト。MEAN, STDEV の値は外れ値 (解析設定ファイルで指定された snr_threshold) を除くノイズの平均値と偏差ですが、自動処理なので信号成分を含んでいます。よってそれから計算される SNR も厳密には S/N を表しません。 正しく S/N を出すには *_dd.sh で取り出したパルスデータを逐一再解析し、バンドパス補正やフラックス較正などする必要があります。
*.png
検出されたパルスの画像 (パルスが検出できなければ出力されません)。帯域特性の除去 (バンドパス補正) を行っていないので、スペクトログラム (ダイナミックスペクトル) には帯域特性がそのまま見られます。その帯域特性の凹凸のせいで、S/N がよほど大きくないとディスパージョンの様子などは視認できません。