【Python】最小構成のMBD事例 第2章 その296【AsamMdf⑯】

【Python】最小構成のMBD事例 第2章 その296【AsamMdf⑯】 事例
【Python】最小構成のMBD事例 第2章 その296【AsamMdf⑯】

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

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました