バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回はシグナルをDataGroupのリストに登録することで
MDFのデータ構造に同等の形まで持ってきた。
今回はこれらDataGroupをMDFモジュールに追加してMDFを生成する話となる。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
MDFの全体構造
前回で各DataGroupのデータ構造は作れたので、
今回はMDF全体のデータ構造を作る部分になる。
これもリスト作って、そこにappendって感じなのかな?
雰囲気的には近いね。
ただ、リストじゃなくてMDFモジュールに対してappendになるけど。
MDFモジュール?
MDFとして管理するためのクラスがあるんだけど、
それのインスタンスだね。
まぁそういうものがあるって程度の認識でOKだと思うよ。
じゃ、そんな認識でいよう。
MDFモジュール生成
MDFモジュール生成は一行で終わる。
mdf = MDF()
ホントに一行で終わった・・・。
今回は使用しないが、
実際にはいろんなオプションがあるんだけどね。
mdf = MDF(version='3.30') # MDF Version指定
mdf = MDF('path/to/file.mf4') # ロードするファイルをして
mdf = MDF(BytesIO(data)) # バイトストリームでMDFファイルを渡す場合
mdf = MDF(zipfile.ZipFile('data.zip')) # ZIPファイルで圧縮されてる場合
まぁ3,4行目のは本質的には2行目のと一緒だな。
Versionも指定できるのね。
Versionに関してはDefaultで‘4.10’になるようだ。
だから、今回はオプション無しで済んでるのか。
MDFモジュールへのDataGroup登録
先ほど生成したMDFモジュールは完全にカラッポの状態。
ここ前回作成したDataGroupを登録していく。
mdf.append(DG_10ms);
mdf.append(DG_100ms);
シグナルはごちゃごちゃとしてたけどDataGroup自体は2個しかないから、
これで済んじゃうのか。
そうそう。
MDF保存
そしてMDFとしてのデータ構造が完成したので
次はファイルとして保存。
mdf.save("sample.mf4", overwrite=True);
これも一行か。
overwrite=True
ってのは同名のファイルがある場合は上書きしちゃってOK。
ってことだね。
その通り。
ちなみにこのオプションがない場合だと以下になる。
- sample.mf4が無ければsample.mf4生成
- sample.mf4があればsample.0.mf4生成
- sample.0.mf4もあればsample.1.mf4生成
- …
- sample.n.mf4もあればsample.(n+1).mf4生成
あ、上書きせずに番号を付加して自動で生成してくれるのか。
これはこれで便利そうだ。
次は生成されたMDFを確認していこう。
まとめ
まとめだよ。
- MDFの全体構造を作るにはMDFクラスのインスタンス(MDFモジュール)が必要。
- MDFモジュールにDataGroupを登録することでMDFとしてのデータ構造が完成する。
- データ構造が完成しているMDFモジュールのsaveメソッドを呼び出すことで保存可能。
- 上書きオプションがあるのでお好みで利用。
バックナンバーはこちら。
コメント