KMST(KAGRA Main Data System)で Frame file (.gwf) を読む¶

  • アカウント申請: JGW-M191020
  • スタートアップガイド: JGW-M1910076
  • System-B (KMST2) の使い方: JGW-T2314750
  • 各データがどこにあるのか:JGW-G2214561
  • DMGマニュアル: https://dac.icrr.u-tokyo.ac.jp/KAGRA/DAWG/DMG/Manuals <- DAC wikiへ入る方法: JGW-L2011668

Frame file の絶対パスを取得してgwpyで読む¶

In [1]:
import os
from gwpy.time import to_gps

# 時刻を指定して、該当するファイルを取得する関数
def gwf_KMST(start, end, frame_type='full'):    
    if frame_type=='full':
        path = '/data/KAGRA/raw/full'
        prefix = 'K-K1_C-'
        T = int(32)
    elif frame_type=='science':
        path = '/data/KAGRA/raw/science'
        prefix = 'K-K1_R-'
        T = int(32)
    elif frame_type=='s-trend':
        path = '/data/KAGRA/raw/trend/second'
        prefix = 'K-K1_T-'
        T = int(600)   
    elif frame_type=='m-trend':
        path = '/data/KAGRA/raw/trend/minute'
        prefix = 'K-K1_M-'
        T = int(3600)   
    else:
        print('"frame_type" setting error! Please select from (full, science, s-trend, m-trend)')
        return        
        
    t0 = (int(to_gps(start))//T)*T
    N  = -((t0 - int(to_gps(end)))//T)   
    
    sources = ['{}/{:5.0f}/{}{:.0f}-{:.0f}.gwf'.format(path, (t0 + i*T)//100000, prefix, t0 + i*T, T) for i in range(N)]
    return [s for s in sources if os.path.isfile(s)]

実際に読んでみる

In [2]:
from gwpy.timeseries import TimeSeriesDict

start = '2025-01-31 14:01:12 JST'
end   = '2025-01-31 14:10:00 JST'
files = gwf_KMST(start, end, frame_type='full')

data = TimeSeriesDict.read(source = files,
                           channels = ['K1:CAL-CS_PROC_DARM_STRAIN_DBL_DQ', 
                                       'K1:PEM-SEIS_IXV_GND_X_OUT_DQ'])
print(data)
TimeSeriesDict([('K1:CAL-CS_PROC_DARM_STRAIN_DBL_DQ', <TimeSeries([-3.96339425e-13, -3.96210763e-13, -3.96050991e-13,
             ..., -5.62975642e-13, -5.63342422e-13,
             -5.63711536e-13]
            unit=Unit(dimensionless),
            t0=<Quantity 1.42233488e+09 s>,
            dt=<Quantity 6.10351562e-05 s>,
            name='K1:CAL-CS_PROC_DARM_STRAIN_DBL_DQ',
            channel=None)>), ('K1:PEM-SEIS_IXV_GND_X_OUT_DQ', <TimeSeries([ 0.16124028,  0.7661218 ,  1.2857995 , ...,
             -0.15102142, -0.29820377, -0.46236202]
            unit=Unit(dimensionless),
            t0=<Quantity 1.42233488e+09 s>,
            dt=<Quantity 0.00195312 s>,
            name='K1:PEM-SEIS_IXV_GND_X_OUT_DQ',
            channel=None)>)])

DetCharのCacheファイルを利用してgwpyで読む¶

In [3]:
! ls /home/detchar/cache/
1368975618_1371337218_O4a.cache  ER2.ffl
1368975618_1371337218_O4a.ffl	 full_O3GK.ffl
C20_O3GK.cache			 full_O3GK_fixed_20210309.ffl
C20_O3GK.ffl			 latest.cache
CacheMinute_GPS			 latest.ffl
CacheSecond_GPS			 latest_minute.cache
Cache_GPS			 latest_minute.ffl
ER1.cache			 latest_second.cache
ER1.ffl				 latest_second.ffl
ER2.cache			 tmp
In [4]:
from gwpy.time import to_gps
from gwpy.timeseries import TimeSeriesDict

data = TimeSeriesDict.read("/home/detchar/cache/Cache_GPS/13647.ffl", 
                           channels = ['K1:CAL-CS_PROC_DARM_STRAIN_DBL_DQ', 
                                       'K1:PEM-SEIS_IXV_GND_X_OUT_DQ'],
                           start = 1364782218,
                           end   = 1364782518)
print(data)
TimeSeriesDict([('K1:CAL-CS_PROC_DARM_STRAIN_DBL_DQ', <TimeSeries([-3.78695960e-13, -3.79012410e-13, -3.79421923e-13,
             ...,  2.94073635e-12,  2.94295044e-12,
              2.94516257e-12]
            unit=Unit(dimensionless),
            t0=<Quantity 1.36478222e+09 s>,
            dt=<Quantity 6.10351562e-05 s>,
            name='K1:CAL-CS_PROC_DARM_STRAIN_DBL_DQ',
            channel=None)>), ('K1:PEM-SEIS_IXV_GND_X_OUT_DQ', <TimeSeries([ 0.23454924, -0.1891914 , -0.18198629, ...,
             -0.5949305 , -0.44377816,  0.11380227]
            unit=Unit(dimensionless),
            t0=<Quantity 1.36478222e+09 s>,
            dt=<Quantity 0.00195312 s>,
            name='K1:PEM-SEIS_IXV_GND_X_OUT_DQ',
            channel=None)>)])

NDS2を利用してデータを読む¶

https://dac.icrr.u-tokyo.ac.jp/KAGRA/DAWG/DMG/Manuals/nds2/nds2-enduser

を参照 (現在m31-02 (system-A)が廃止されたので利用不可)


DGSネットワークで NDS2を利用して Frame file (.gwf) を読む¶

以下の場所でのみ使用可能

  • KAGRA坑内
  • 神岡の解析棟・北部会館
  • NAOJ三鷹のサテライトコントロールルーム

「過去にはあったけど現在は無いチャンネル」は見れないので注意

In [1]:
from gwpy.timeseries import TimeSeriesDict

data = TimeSeriesDict.fetch(channels = ['K1:CAL-CS_PROC_DARM_STRAIN_DBL_DQ', 
                                        'K1:PEM-SEIS_IXV_GND_X_OUT_DQ'],
                            start = 1364782218,
                            end   = 1364782518,
                            host='k1nds2', 
                            port=31200)

print(data)
TimeSeriesDict([('K1:CAL-CS_PROC_DARM_STRAIN_DBL_DQ', <TimeSeries([-3.78695960e-13, -3.79012410e-13, -3.79421923e-13,
             ...,  2.94073635e-12,  2.94295044e-12,
              2.94516257e-12]
            unit=Unit("NONE"),
            t0=<Quantity 1.36478222e+09 s>,
            dt=<Quantity 6.10351562e-05 s>,
            name='K1:CAL-CS_PROC_DARM_STRAIN_DBL_DQ',
            channel=<Channel("K1:CAL-CS_PROC_DARM_STRAIN_DBL_DQ" [raw], 16384.0 Hz) at 0x7f905c1ac4c0>)>), ('K1:PEM-SEIS_IXV_GND_X_OUT_DQ', <TimeSeries([ 0.23454924, -0.1891914 , -0.18198629, ...,
             -0.5949305 , -0.44377816,  0.11380227]
            unit=Unit("um / s"),
            t0=<Quantity 1.36478222e+09 s>,
            dt=<Quantity 0.00195312 s>,
            name='K1:PEM-SEIS_IXV_GND_X_OUT_DQ',
            channel=<Channel("K1:PEM-SEIS_IXV_GND_X_OUT_DQ" [raw], 512.0 Hz) at 0x7f905c1ac790>)>)])