バックナンバーはこちら。
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メソッドを呼び出すことで保存可能。
- 上書きオプションがあるのでお好みで利用。
バックナンバーはこちら。
コメント