mdf.filter()の謎
asammdfのドキュメントに従えば、mdf.filter()という関数で、巨大なサイズ・データ量となるMDFファイルから必要なデータのみ抜き出して軽量化することができます。
実際、ドキュメントには以下の通り記載されており、mdf.filterに続いてパラメータを引数として与えると、パラメータに従ったデータのみが残存するMDFファイルが新たに作成されます。
ところが、下記のようなコードを作成し、ch_Listに上記のドキュメントに従い
- 信号名を直接指定
- 信号名とGroup_IndexそれにChannel_Indexをリスト型で与える
- 信号名とGroup_Indexをリスト型で与える
- ”None”とGropu_Index, Channel_Indexをリスト型で与える
を試したところ、単独の信号をリスト型で渡した場合は、1つのデータのみが格納されたMDFデータが作成されるのですが….
複数の信号をリスト型で渡すと、リストで与えた信号全てを含むMDFデータが作成されるのですが、指定していない信号(Originalには存在しない信号)や、同一の信号が別のChannelもしくはGroupに格納され重複するという事象が発生しております。
mdfNew.configure(raise_on_multiple_occurrences = False)
mdfNew = mdfData.filter(ch_List)
mdfNew.save(outputFile, compression = 2, overwrite=True)
当初、この原因は1の信号名のみを与えているため、Originalのデータに重複して記録されているデータが、悪さをしているのだろうと考え、ch_Listを作成する際にリスト内で信号名の重複を無くしてみたり、Group_Index, Channel_Indexの重複のないリストを作成した上で2の書式でmdf.filter(信号名、Gr_Index, Ch_Index)として、呼び出してみたりともしたのですが、いずれの手法でも問題が解決しませんでした。
今後解決に向けて、更なる手法を試していこうと考えております。
最近のコメント