シンプルにメッセージとシグナルを表示する
import asammdf
mdf = asammdf.MDF("BusLogging_xxxx.MF4")
for g in mdf.groups:
print(g.channel_group.acq_name)
for c in g.channels:
print(" ", c.name)
ipytreeを使ってツリー表示
import asammdf
from ipytree import Tree, Node
mdf = asammdf.MDF("BusLogging_xxxx.MF4")
nodes = []
for g in mdf.groups:
acq_name = g.channel_group.acq_name
node = Node(acq_name, [Node(c.name) for c in g.channels])
node.opened = False
nodes.append(node)
root = Node('root', nodes)
root.opened = False
tree = Tree()
tree.add_node(root)
display(tree)
メッセージがたくさんある場合、接頭語でグループ化してツリー表示
import asammdf
from ipytree import Tree, Node
other_name = 'Other'
keys = 'AAA BBB CCC'.split()
node_hash = {other_name: []}
for k in keys:
node_hash[k] = []
mdf = asammdf.MDF("BusLogging_xxxx.MF4")
for g in mdf.groups:
acq_name = g.channel_group.acq_name
key_name = other_name
for k in keys:
if k in acq_name:
key_name = k
break
node = Node(g.channel_group.acq_name, [Node(c.name) for c in g.channels])
node.opened = False
node_hash[key_name].append(node)
root_nodes = []
for name, nodes in node_hash.items():
node = Node(name, nodes)
node.opened = False
root_nodes.append(node)
root = Node('root', root_nodes)
root.opened = False
tree = Tree()
tree.add_node(root)
display(tree)
複数ソースがある場合のメッセージ、シグナルの情報収集
import asammdf
mdf = asammdf.MDF("Recorder_AllSignal_*.mf4")
info = []
for gi, g in enumerate(mdf.groups):
for ci, c in enumerate(g.channels):
if c.source is not None:
info.append((gi, g.channel_group.acq_name, ci, c.name, c.source.path))
else:
info.append((gi, g.channel_group.acq_name, ci, c.name, None))
source2msgs = {}
for gi, gn, ci, cn, s in info:
if s is None:
continue
h = source2msgs.get(s, set())
h.add((gi, gn))
source2msgs[s] = h
source2sigs = {}
for source, msgs in source2msgs.items():
source2sigs[source] = {}
for gi, gn in msgs:
source2sigs[source][gi] = dict(name=gn, sigs=[])
sigs = []
for ci, c in enumerate(mdf.groups[gi].channels):
sigs.append((ci, c.name))
source2sigs[source][gi]['sigs'] = sigs
ソース別メッセージのツリー表示
from ipytree import Tree, Node
source_nodes = []
for s in source2msgs.keys():
node = Node(s, [Node(gn) for gi, gn in source2msgs[s]])
node.opened = False
source_nodes.append(node)
#print(s)
#for gi, gn in source2msgs[s]:
# print(" ", gi, gn)
root = Node('sources', source_nodes)
root.opened = False
tree = Tree()
tree.add_node(root)
display(tree)