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.You are not allowed to attach a file to this page.