Attachment '20180703.md'

Download

   1 # コミッショニングツールワーキンググループ
   2 2018/7/3 12:15-13:00   
   3 参加者:高橋,横澤,山本尚弘,佐々井,田越,大原,坂井,  
   4 記録:田越  
   5 Wiki: http://gwwiki.icrr.u-tokyo.ac.jp/JGWwiki/KAGRA/Subgroups/DAS/WG/CommTools
   6 
   7 ## 進捗状況
   8 
   9 #### タスク
  10 
  11 - PythonからFrameデータを呼び出す(C):大原,田越,神田,
  12    - (田越)
  13      - KAGALIに新しいFrameファイル読み込み関数作成. 
  14      - PythonからFrameデータ読み込み成功.付録参照.
  15      - 値を返す関数はXKGLを付ける
  16 - Frameデータ チャンネル一覧(KAGALI,Python):FrChannelsを書き換え.譲原 
  17    - (譲原)Frame LibraryにFrFileIgetChannelListという関数があった
  18    - 今週報告無し
  19 - Daili summary page 
  20    - 神岡からアクセス出来るようにした.
  21    - 16kHzの24時間データがプロット出来ない.rootの仕様か.
  22    - daily summary
  23      -  http://www.icrr.u-tokyo.ac.jp/~yuzu/bKAGRA_summary/html/
  24 - 時間指定をしてファイルを開くツール:田越 
  25    - 関数化する.時刻を指定するとframeデータを読みだす関数.
  26       - lalframe.frreadを使ったもの制作中.
  27 - 長期の時系列(Python):佐々井  
  28    - 長期とは何か?
  29      - (横澤)1分ごと,1時間ごと,1日ごとの平均などをみれるとうれしい.
  30        - 神岡のシステムにはある.主データ装置にもあるとうれしい.
  31      - (山本)trend/のFrameファイルにそのようなデータが入っている.
  32      - (山本)1時間の平均,最大,最小などあるとよい.
  33    - 主データ装置で動くことを確認.
  34 - 時系列のヒストグラム(Python):佐々井 => 検討中
  35    - 主データ装置,matplotlibのグラフが開けない.=> ssh -YC付けてOK.  
  36 - スペクトログラム(C,...):佐々井 => 検討中  
  37 - detrend(トレンド補正)(C):大原  
  38   - 今週進展無し
  39   - 大原:Python, Matlabを調査した    
  40     - これらを参考に早急に作成する  
  41     - HHTのような新しい方法も作れるかも知れない.(研究テーマになる)   
  42   - 大原:pythonと同じものをCで作った. git へはまだ. 
  43   - gslを使っている.piesewise linearのトレンド補正も作っている.平均値を引くというのもある.
  44 - window function(C):大原  
  45   - 大原:トレンド補正の後にやる.
  46   - まだ.
  47 - high pass, low pass filter, band pass, band stop filter(C),filtfilt(C):坂井,大原  
  48   - 坂井:大原さん,酒井君がつくったものを発展させていく.  
  49   - low pass, high passを追加した.
  50   - (大原)KAGALIにのせるやり方をこれから教える
  51   - scipyと比較している.
  52 
  53 - 今週以下は進展無し
  54   - コヒーレンス(2つの信号のクロススペクトラム)(C,Python):議論無し  
  55   - 1つのCHと多数のCHとのコヒーレンス(C,Python):議論無し  
  56   - LIGO でやってるiDQのようなこともいずれする必要があるか. 
  57       - iDQ:多変量解析  
  58           - 伊藤:韓国Gがやっているらしい(John Ohと話をする)   
  59 
  60 #### GUI ツール  
  61 - 今週進展無し
  62 - 田越:PythonによるGUIツールを調べている.GWpyも調べる.  
  63 - 山本:三代君がGWpyで遊んでいる.GWpyを使ったツールがあれば,神岡で使える.  
  64 - 山本:GWpyは表示が速い.読み出し速度の問題解決に有効そうである.  
  65 
  66 #### その他
  67 - 横澤:チャンネル名とその内容の説明のリストを作っている.
  68   -  http://gwwiki.icrr.u-tokyo.ac.jp/JGWwiki/KAGRA/Commissioning/Phase1/Operation/ChannelList?action=AttachFile&do=view&target=bKAGRA_phase1_channel.pdf
  69   -  新しいサブシステム発足.
  70 - 苔山: Duncan Macleod に話をしてもらう.10月15日の週に来日する.
  71 - 横澤: PEMの予算を考えている.https://gwdoc.icrr.u-tokyo.ac.jp/DocDB/0084/G1808435/001/PEM_plan_180702.pdf
  72 
  73 ## 次回  
  74 2018年7月9日(月) 13:15 - 13:50 (重力波会議終了後)  
  75 
  76 ## 付録
  77 
  78 ## 田越: swigをつかって,pythonからFrameデータを読み込む
  79 ### swigとは
  80 - http://www.swig.org
  81 - C/C++コードを,様々な他の言語から呼び出して使うためのツール
  82 - 対応言語: C#, Java, Perl, Python, TCL, R, Ruby, など
  83 
  84 
  85 ### KAGALI Frameデータ読み込み関数 新しいものを作成
  86 - 複数frameに対応
  87 - ファイル名,チャンネル名(1つ)を与えれば,ファイルにあるデータを最初から最後まで読み込む.
  88 - 保存されているデータ型のまま取り出す.
  89 
  90 
  91 ```
  92 /* KGLframeread.h */
  93 
  94 typedef struct _kglframedata
  95 {
  96   double           srate;
  97   long             ndata;
  98   long             ndata_oneframe;
  99   int              nframe;
 100   char            Channel[128];
 101   unsigned short  Datatype;
 102   double          *dataD;
 103   float           *dataF;
 104   short           *dataS;
 105   int             *dataI;
 106   long            *dataL;
 107   complex float   *dataCF; /* 使わない*/
 108   complex double  *dataCD; /* 使わない*/
 109   unsigned short  *dataUS;
 110   unsigned int    *dataUI;
 111   unsigned long   *dataUL;
 112 } kglframedata;
 113 
 114 void KGLInitframedata
 115 (//begin{proto}
 116  kglframedata *framedata      /**< [in/out] Frame Data structure*/ 
 117 );//end{proto}
 118 
 119 void KGLDestroyframedata
 120 (//begin{proto}
 121  kglframedata *framedata      /**< [in/out] Frame Data structure*/ 
 122 );//end{proto}
 123 
 124 void KGLSetupframedata
 125 (//begin{proto}
 126  char *cFileName,             /**< [in]  The name of Frame file */
 127  char *cChannel,              /**< [in]  The name of channel */
 128  kglframedata *framedata      /**< [in/out] Frame Data structure*/ 
 129 );//end{proto}
 130 
 131 kglframedata KGLSetupandReadFrame
 132 (//begin{proto}
 133  char *cFileName,             /**< [in]  The name of Frame file */
 134  char *cChannel              /**< [in]  The name of channel */
 135 // kglframedata *framedata      /**< [in/out] Frame Data structure*/ 
 136 );//end{proto}
 137 
 138 void KGLReadFrame
 139 (//begin{proto}
 140  char *cFileName,              /**< [in]  The name of Frame file */
 141  char *cChannel,               /**< [in]  The name of channel */
 142  kglframedata *framedata      /**< [in/out] Frame Data structure*/ 
 143 );//end{proto}
 144 
 145 ```
 146 
 147 今のところ,Pythonから使うのは`kglframedata KGLSetupandReadFrame()`
 148 
 149 ### swig用設定ファイル
 150 ```
 151 /* KGLframeread.i */
 152 %module KGLframeread
 153 %{
 154 /* Put header files here or function declarations like below */
 155 #include "/Users/tagoshi/kagali/include/kagali/KGLStdlib.h"
 156 #include "/Users/tagoshi/kagali/include/kagali/KGLUtil.h"
 157 #include <FrameL.h>
 158 #include "KGLframeread.h"
 159 %}
 160 
 161 %include "carrays.i"
 162 %array_functions(double,doubleArray)
 163 %array_functions(float,floatArray)
 164 %array_functions(short,shortArray)
 165 %array_functions(int,intArray)
 166 %array_functions(long,longArray)
 167 %array_functions(unsigned short,ushortArray)
 168 %array_functions(unsigned int,uintArray)
 169 %array_functions(unsigned long,ulongArray)
 170 
 171 typedef struct _kglframedata
 172 {
 173   double           srate;
 174   long             ndata;
 175   long             ndata_oneframe;
 176   int              nframe;
 177   char            Channel[128];
 178   unsigned short  Datatype;
 179   double          *dataD;
 180   float           *dataF;
 181   short           *dataS;
 182   int             *dataI;
 183   long            *dataL;
 184   complex float   *dataCF;
 185   complex double  *dataCD;
 186   unsigned short  *dataUS;
 187   unsigned int    *dataUI;
 188   unsigned long   *dataUL;
 189 } kglframedata;
 190 
 191 enum     {FR_VECT_C,     /* vector of char                           */
 192           FR_VECT_2S,    /* vector of short                          */
 193           FR_VECT_8R,    /* vector of double                         */
 194           FR_VECT_4R,    /* vector of float                          */
 195           FR_VECT_4S,    /* vector of int                            */
 196           FR_VECT_8S,    /* vector of long                           */
 197           FR_VECT_8C,    /* vector of complex float                  */
 198           FR_VECT_16C,   /* vector of complex double                 */
 199           FR_VECT_STRING,/* vector of string                         */
 200           FR_VECT_2U,    /* vector of unsigned short                 */
 201           FR_VECT_4U,    /* vector of unsigned int                   */
 202           FR_VECT_8U,    /* vector of unsigned long                  */
 203           FR_VECT_1U,    /* vector of unsigned char                  */
 204           FR_VECT_8H,    /* halfcomplex vectors (float) (FFTW order) */
 205           FR_VECT_16H,   /* halfcomplex vectors (double)(FFTW order) */
 206           FR_VECT_END};  /* vector of unsigned char                  */
 207 
 208 extern void KGLInitframedata(kglframedata *framedata);
 209 extern void KGLDestroyframedata(kglframedata *framedata);
 210 extern kglframedata KGLSetupandReadFrame(char *cFileName, char *cChannel);
 211 ```
 212 `KGLframeread.c, KGLframeread.h, KGLframeread.i`
 213 の3つのファイルを用意し,コンパイルする.
 214 
 215 ```
 216 $ swig -python KGLframeread.i  /* KGLframeread_wrap.c作成*/
 217 $ gcc -c `python-config --cflags` $(CFLAGS_KAGALI) KGLframeread.c KGLframeread_wrap.c 
 218 $ gcc -bundle `python-config --ldflags` $(LDFLAGS_KAGALI) KGLframeread.o KGLframeread_wrap.o -o _KGLframeread.so 
 219 ```
 220 
 221 ```
 222 # Makefile
 223 
 224 CC = gcc
 225 PKGCONFIG = pkg-config
 226 
 227 LDFLAGS_KAGALI = $(shell $(PKGCONFIG) --libs kagali)
 228 CFLAGS_KAGALI =  $(shell $(PKGCONFIG) --cflags kagali)
 229 
 230 CFLAGS_ORI = -O2 -Wall --std=gnu99 
 231 CFLAGS_PY = `python-config --cflags`
 232 LDFLAGS  = -bundle -L/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/config-3.6m-darwin -lpython3.6m -ldl -framework CoreFoundation
 233 
 234 LDFLAGS := $(LDFLAGS) $(LDFLAGS_KAGALI) 
 235 CFLAGS := $(CFLAGS_ORI) $(CFLAGS_KAGALI) $(CFLAGS_PY)
 236 
 237 all: _KGLframeread.so TestKGLframeread
 238 
 239 _KGLframeread.so: KGLframeread.o KGLframeread_wrap.o
 240 	gcc $(LDFLAGS) KGLframeread.o KGLframeread_wrap.o -o _KGLframeread.so
 241 
 242 KGLframeread.o: KGLframeread.c
 243 	gcc -c $(CFLAGS) KGLframeread.c
 244 
 245 KGLframeread_wrap.o: KGLframeread_wrap.c
 246 	gcc -c $(CFLAGS) KGLframeread_wrap.c 
 247 
 248 KGLframeread_wrap.c: KGLframeread.i KGLframeread.c KGLframeread.h
 249 	swig -python KGLframeread.i
 250 
 251 TestKGLframeread: TestKGLframeread.c KGLframeread.o
 252 	$(CC) $(CFLAGS_ORI) $(CFLAGS_KAGALI) -o $@ $< KGLframeread.o $(LDFLAGS_KAGALI) 
 253 
 254 clean:
 255 	rm -fr *_wrap.c *.dSYM *.o *.so KGLframeread.py
 256 
 257 ```
 258 
 259 
 260 ### 更にPythonラッパー関数
 261 以上で一応Frameデータは読める.(速度的に改善の余地はある)
 262 便利に読むためにラッパー関数作成(framereadfn.py)
 263 
 264 ```
 265 # framereadfn.py 
 266 
 267 import numpy as np
 268 from KGLframeread import *
 269 
 270 def readframe(filename,CH):
 271   framedata = KGLSetupandReadFrame(filename,CH)
 272   ndata = framedata.ndata
 273   srate = framedata.srate
 274   data = np.empty(ndata)
 275   type = framedata.Datatype
 276 
 277   if type == FR_VECT_8R:
 278     ctype = "FR_VECT_8R"
 279     for i in range(ndata):
 280       data[i] = doubleArray_getitem(framedata.dataD,i)
 281   elif type == FR_VECT_4R:
 282     ctype = "FR_VECT_4R"
 283     for i in range(ndata):
 284       data[i] = floatArray_getitem(framedata.dataF,i)
 285   elif type == FR_VECT_2S:
 286     ctype = "FR_VECT_2S"
 287     for i in range(ndata):
 288       data[i] = shortArray_getitem(framedata.dataS,i)
 289   elif type == FR_VECT_4S:
 290     ctype = "FR_VECT_4S"
 291     for i in range(ndata):
 292       data[i] = intArray_getitem(framedata.dataI,i)
 293   elif type == FR_VECT_8S:
 294     ctype = "FR_VECT_8S"
 295     for i in range(ndata):
 296       data[i] = longArray_getitem(framedata.dataL,i)
 297   elif type == FR_VECT_2U:
 298     ctype = "FR_VECT_2U"
 299     for i in range(ndata):
 300       data[i] = ushortArray_getitem(framedata.dataUS,i)
 301   elif type == FR_VECT_4U:
 302     ctype = "FR_VECT_4U"
 303     for i in range(ndata):
 304       data[i] = uintArray_getitem(framedata.dataUI,i)
 305   elif type == FR_VECT_8U:
 306     ctype = "FR_VECT_8U"
 307     for i in range(ndata):
 308       data[i] = ulongArray_getitem(framedata.dataUL,i)
 309   else:
 310     print('Datatype %ud is not supported' % type)
 311 
 312   return data, ndata, srate, ctype
 313 
 314 ```
 315 ### テスト
 316 
 317 ```
 318 # testframeread.py
 319 
 320 import numpy as np
 321 import matplotlib.pyplot as plt
 322 from framereadfn import *
 323 
 324 filename = "H-H1_LOSC_4_V2-1126259446-32.gwf"
 325 #CH = "H1:LOSC-STRAIN"
 326 CH = "H1:LOSC-DQMASK"
 327 #CH="H1:LOSC-INJMASK"
 328 
 329 filename = "/data/full/12095/K-K1_C-1209500000-32.gwf"
 330 CH = "K1:CAL-CS_PROC_C00_STRAIN_DQ"
 331 #CH = "K1:GRD-LSC_MICH_STATE_N"
 332 
 333 data,ndata,srate,ctype = readframe(filename,CH)
 334 dt=1./srate
 335 timelist=np.arange(ndata)*dt
 336 
 337 plt.plot(timelist,data)
 338 plt.title(CH + "( %.0f Hz, %s)" % (srate,ctype))
 339 plt.show()
 340 
 341 ```
 342 
 343 ```
 344 $ ls
 345 H-H1_LOSC_4_V2-1126259446-32.gwf*	Makefile
 346 KGLframeread*				Makefile.1
 347 KGLframeread.c				TestKGLframeread*
 348 KGLframeread.h				TestKGLframeread.c
 349 KGLframeread.i				_KGLframeread.so*
 350 KGLframeread.o				__pycache__/
 351 KGLframeread.py				framereadfn.py
 352 KGLframeread_wrap.c			setup.py
 353 KGLframeread_wrap.o			testframeread.py
 354 
 355 $ python testframeread.py
 356 ```
 357 グラフが表示される

Attached Files

To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.
  • [get | view] (2018-05-30 13:22:40, 3.0 KB) [[attachment:20180529.md]]
  • [get | view] (2018-05-30 13:22:30, 88.3 KB) [[attachment:20180529.pdf]]
  • [get | view] (2018-06-05 13:34:01, 2.5 KB) [[attachment:20180605.md]]
  • [get | view] (2018-06-05 13:34:08, 78.2 KB) [[attachment:20180605.pdf]]
  • [get | view] (2018-06-05 13:50:03, 2.6 KB) [[attachment:20180605v2.md]]
  • [get | view] (2018-06-05 13:50:23, 78.2 KB) [[attachment:20180605v2.pdf]]
  • [get | view] (2018-06-18 15:18:45, 7.2 KB) [[attachment:20180618.md]]
  • [get | view] (2018-06-18 15:18:40, 131.7 KB) [[attachment:20180618.pdf]]
  • [get | view] (2018-06-26 13:54:04, 8.6 KB) [[attachment:20180624_yuzurihara_daily_summary.md]]
  • [get | view] (2018-06-26 13:53:48, 7.8 KB) [[attachment:20180626.md]]
  • [get | view] (2018-06-26 13:53:57, 140.5 KB) [[attachment:20180626.pdf]]
  • [get | view] (2018-07-03 16:26:16, 12.5 KB) [[attachment:20180703.md]]
  • [get | view] (2018-07-03 16:26:23, 148.4 KB) [[attachment:20180703.pdf]]
  • [get | view] (2018-07-16 21:16:18, 3.9 KB) [[attachment:20180709.md]]
  • [get | view] (2018-07-16 21:16:27, 98.4 KB) [[attachment:20180709.pdf]]
  • [get | view] (2018-07-16 21:17:33, 87.3 KB) [[attachment:20180709yuzu.pdf]]
  • [get | view] (2018-08-06 14:09:36, 5.4 KB) [[attachment:20180724.md]]
  • [get | view] (2018-08-06 14:09:45, 119.7 KB) [[attachment:20180724.pdf]]
  • [get | view] (2018-08-06 14:09:59, 5.4 KB) [[attachment:20180806.md]]
  • [get | view] (2018-08-06 14:10:05, 123.6 KB) [[attachment:20180806.pdf]]
  • [get | view] (2018-05-30 13:22:57, 352.7 KB) [[attachment:commtool.pdf]]
 All files | Selected Files: delete move to page copy to page

You are not allowed to attach a file to this page.