sonusai 0.17.0__tar.gz → 0.17.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sonusai-0.17.0 → sonusai-0.17.2}/PKG-INFO +2 -1
- {sonusai-0.17.0 → sonusai-0.17.2}/pyproject.toml +2 -1
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/audiofe.py +22 -51
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/calc_metric_spenh.py +206 -213
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/doc/doc.py +1 -1
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/__init__.py +2 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/audio.py +12 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/datatypes.py +11 -3
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/mixdb.py +101 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/soundfile_audio.py +39 -0
- sonusai-0.17.2/sonusai/mixture/speaker_metadata.py +35 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/torchaudio_audio.py +22 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mkmanifest.py +1 -1
- sonusai-0.17.2/sonusai/onnx_predict.py +208 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/queries/queries.py +1 -1
- sonusai-0.17.2/sonusai/speech/__init__.py +3 -0
- sonusai-0.17.2/sonusai/speech/l2arctic.py +116 -0
- sonusai-0.17.2/sonusai/speech/librispeech.py +99 -0
- sonusai-0.17.2/sonusai/speech/mcgill.py +70 -0
- sonusai-0.17.2/sonusai/speech/textgrid.py +100 -0
- sonusai-0.17.2/sonusai/speech/timit.py +135 -0
- sonusai-0.17.2/sonusai/speech/types.py +12 -0
- sonusai-0.17.2/sonusai/speech/vctk.py +52 -0
- sonusai-0.17.2/sonusai/speech/voxceleb2.py +86 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/__init__.py +2 -1
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/asr_manifest_functions/__init__.py +0 -1
- sonusai-0.17.2/sonusai/utils/asr_manifest_functions/data.py +1 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/asr_manifest_functions/librispeech.py +1 -1
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/asr_manifest_functions/mcgill_speech.py +1 -1
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/asr_manifest_functions/vctk_noisy_speech.py +1 -1
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/braced_glob.py +7 -3
- sonusai-0.17.2/sonusai/utils/onnx_utils.py +158 -0
- sonusai-0.17.0/sonusai/utils/asr_manifest_functions/data.py → sonusai-0.17.2/sonusai/utils/path_info.py +0 -2
- sonusai-0.17.0/sonusai/calc_metric_spenh-save.py +0 -1334
- sonusai-0.17.0/sonusai/onnx_predict-old.py +0 -240
- sonusai-0.17.0/sonusai/onnx_predict-save.py +0 -487
- sonusai-0.17.0/sonusai/onnx_predict.py +0 -504
- sonusai-0.17.0/sonusai/ovino_predict.py +0 -508
- sonusai-0.17.0/sonusai/ovino_query_devices.py +0 -47
- sonusai-0.17.0/sonusai/torchl_onnx-old.py +0 -216
- sonusai-0.17.0/sonusai/utils/onnx_utils.py +0 -154
- {sonusai-0.17.0 → sonusai-0.17.2}/README.rst +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/__init__.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/aawscd_probwrite.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/data/__init__.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/data/genmixdb.yml +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/data/speech_ma01_01.wav +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/data/whitenoise.wav +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/doc/__init__.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/doc.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/genft.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/genmix.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/genmixdb.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/gentcst.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/lsdb.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/main.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/metrics/__init__.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/metrics/calc_class_weights.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/metrics/calc_optimal_thresholds.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/metrics/calc_pcm.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/metrics/calc_pesq.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/metrics/calc_sa_sdr.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/metrics/calc_sample_weights.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/metrics/calc_wer.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/metrics/calc_wsdr.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/metrics/class_summary.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/metrics/confusion_matrix_summary.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/metrics/one_hot.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/metrics/snr_summary.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/augmentation.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/class_count.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/config.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/constants.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/eq_rule_is_valid.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/feature.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/generation.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/helpers.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/log_duration_and_sizes.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/mapped_snr_f.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/sox_audio.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/sox_augmentation.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/spectral_mask.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/target_class_balancing.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/targets.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/tokenized_shell_vars.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/torchaudio_augmentation.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/truth.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/truth_functions/__init__.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/truth_functions/crm.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/truth_functions/data.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/truth_functions/energy.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/truth_functions/file.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/truth_functions/phoneme.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/truth_functions/sed.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mixture/truth_functions/target.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/mkwav.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/plot.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/post_spenh_targetf.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/queries/__init__.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/summarize_metric_spenh.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/tplot.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/asl_p56.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/asr.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/asr_functions/__init__.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/asr_functions/aaware_whisper.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/audio_devices.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/calculate_input_shape.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/convert_string_to_number.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/create_timestamp.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/create_ts_name.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/dataclass_from_dict.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/db.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/docstring.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/energy_f.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/engineering_number.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/get_frames_per_batch.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/get_label_names.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/grouper.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/human_readable_size.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/max_text_width.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/model_utils.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/numeric_conversion.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/parallel.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/print_mixture_details.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/ranges.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/read_mixture_data.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/read_predict_data.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/reshape.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/seconds_to_hms.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/stacked_complex.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/stratified_shuffle_split.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/wave.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/utils/yes_or_no.py +0 -0
- {sonusai-0.17.0 → sonusai-0.17.2}/sonusai/vars.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: sonusai
|
3
|
-
Version: 0.17.
|
3
|
+
Version: 0.17.2
|
4
4
|
Summary: Framework for building deep neural network models for sound, speech, and voice AI
|
5
5
|
Home-page: https://aaware.com
|
6
6
|
License: GPL-3.0-only
|
@@ -26,6 +26,7 @@ Requires-Dist: onnxruntime (>=1.16.1,<2.0.0)
|
|
26
26
|
Requires-Dist: paho-mqtt (>=2.0.0,<3.0.0)
|
27
27
|
Requires-Dist: pandas (>=2.1.1,<3.0.0)
|
28
28
|
Requires-Dist: pesq (>=0.0.4,<0.0.5)
|
29
|
+
Requires-Dist: praatio (>=6.2.0,<7.0.0)
|
29
30
|
Requires-Dist: pyaaware (>=1.5.7,<2.0.0)
|
30
31
|
Requires-Dist: pyaudio (>=0.2.14,<0.3.0)
|
31
32
|
Requires-Dist: pydub (>=0.25.1,<0.26.0)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "sonusai"
|
3
|
-
version = "0.17.
|
3
|
+
version = "0.17.2"
|
4
4
|
description = "Framework for building deep neural network models for sound, speech, and voice AI"
|
5
5
|
authors = ["Chris Eddington <chris@aaware.com>", "Jason Calderwood <jason@aaware.com>"]
|
6
6
|
maintainers = ["Chris Eddington <chris@aaware.com>", "Jason Calderwood <jason@aaware.com>"]
|
@@ -26,6 +26,7 @@ onnxruntime = "^1.16.1"
|
|
26
26
|
paho-mqtt = "^2.0.0"
|
27
27
|
pandas = "^2.1.1"
|
28
28
|
pesq = "^0.0.4"
|
29
|
+
praatio = "^6.2.0"
|
29
30
|
pyaaware = "^1.5.7"
|
30
31
|
pyaudio = "^0.2.14"
|
31
32
|
pydub = "^0.25.1"
|
@@ -1,16 +1,15 @@
|
|
1
1
|
"""sonusai audiofe
|
2
2
|
|
3
|
-
usage: audiofe [-hvds] [--version] [-i INPUT] [-l LENGTH] [-m MODEL] [-
|
3
|
+
usage: audiofe [-hvds] [--version] [-i INPUT] [-l LENGTH] [-m MODEL] [-a ASR] [-w WMODEL]
|
4
4
|
|
5
5
|
options:
|
6
6
|
-h, --help
|
7
7
|
-v, --verbose Be verbose.
|
8
8
|
-d, --debug Write debug data to H5 file.
|
9
|
-
-s, --show
|
9
|
+
-s, --show Display a list of available audio inputs.
|
10
10
|
-i INPUT, --input INPUT Input audio.
|
11
11
|
-l LENGTH, --length LENGTH Length of audio in seconds. [default: -1].
|
12
|
-
-m MODEL, --model MODEL
|
13
|
-
-k CKPT, --checkpoint CKPT PL checkpoint file with weights.
|
12
|
+
-m MODEL, --model MODEL ONNX model.
|
14
13
|
-a ASR, --asr ASR ASR method to use.
|
15
14
|
-w WMODEL, --whisper WMODEL Model used in whisper, aixplain_whisper and faster_whisper methods. [default: tiny].
|
16
15
|
|
@@ -66,7 +65,6 @@ def main() -> None:
|
|
66
65
|
length = float(args['--length'])
|
67
66
|
input_name = args['--input']
|
68
67
|
model_name = args['--model']
|
69
|
-
ckpt_name = args['--checkpoint']
|
70
68
|
asr_name = args['--asr']
|
71
69
|
whisper_name = args['--whisper']
|
72
70
|
debug = args['--debug']
|
@@ -76,10 +74,6 @@ def main() -> None:
|
|
76
74
|
|
77
75
|
import h5py
|
78
76
|
import pyaudio
|
79
|
-
import torch
|
80
|
-
from docopt import printable_usage
|
81
|
-
from sonusai_torchl.utils import load_torchl_ckpt_model
|
82
|
-
from sonusai.utils.onnx_utils import load_ort_session
|
83
77
|
|
84
78
|
from sonusai import create_file_handler
|
85
79
|
from sonusai import initial_log_messages
|
@@ -91,7 +85,7 @@ def main() -> None:
|
|
91
85
|
from sonusai.utils import calc_asr
|
92
86
|
from sonusai.utils import create_timestamp
|
93
87
|
from sonusai.utils import get_input_devices
|
94
|
-
from sonusai.utils import
|
88
|
+
from sonusai.utils import load_ort_session
|
95
89
|
from sonusai.utils import write_wav
|
96
90
|
|
97
91
|
ts = create_timestamp()
|
@@ -103,33 +97,6 @@ def main() -> None:
|
|
103
97
|
predict_png = predict_name + '.png'
|
104
98
|
h5_name = f'audiofe_{ts}.h5'
|
105
99
|
|
106
|
-
if model_name is not None:
|
107
|
-
from os.path import splitext
|
108
|
-
if splitext(model_name)[1] == '.onnx':
|
109
|
-
session, options, model_root, hparams, sess_inputs, sess_outputs = load_ort_session(model_name)
|
110
|
-
if hparams is None:
|
111
|
-
logger.error(f'Error: onnx model does not have required SonusAI hyper-parameters, can not proceed.')
|
112
|
-
raise SystemExit(1)
|
113
|
-
feature_mode = hparams["feature"]
|
114
|
-
model_is_onnx = True
|
115
|
-
in0name = sess_inputs[0].name
|
116
|
-
in0type = sess_inputs[0].type
|
117
|
-
out0name = sess_outputs[0].name
|
118
|
-
out_names = [n.name for n in session.get_outputs()]
|
119
|
-
if in0type.find('float16') != -1:
|
120
|
-
model_is_fp16 = True
|
121
|
-
logger.info(f'Detected input of float16, converting all feature inputs to that type.')
|
122
|
-
else:
|
123
|
-
model_is_fp16 = False
|
124
|
-
else:
|
125
|
-
model_is_onnx = False
|
126
|
-
if ckpt_name is None:
|
127
|
-
print(printable_usage(trim_docstring(__doc__)))
|
128
|
-
exit(1)
|
129
|
-
model = load_torchl_ckpt_model(model_name=model_name, ckpt_name=ckpt_name)
|
130
|
-
feature_mode = model.hparams.feature
|
131
|
-
model.eval()
|
132
|
-
|
133
100
|
# Setup logging file
|
134
101
|
create_file_handler('audiofe.log')
|
135
102
|
update_console_handler(verbose)
|
@@ -153,7 +120,7 @@ def main() -> None:
|
|
153
120
|
except ValueError as e:
|
154
121
|
logger.exception(e)
|
155
122
|
return
|
156
|
-
# Only write if capture, not for file input
|
123
|
+
# Only write if capture from device, not for file input
|
157
124
|
write_wav(capture_wav, capture_audio, SAMPLE_RATE)
|
158
125
|
logger.info('')
|
159
126
|
logger.info(f'Wrote capture audio with shape {capture_audio.shape} to {capture_wav}')
|
@@ -171,7 +138,17 @@ def main() -> None:
|
|
171
138
|
logger.info(f'Capture audio ASR: {capture_asr}')
|
172
139
|
|
173
140
|
if model_name is not None:
|
174
|
-
|
141
|
+
session, options, model_root, hparams, sess_inputs, sess_outputs = load_ort_session(model_name)
|
142
|
+
if hparams is None:
|
143
|
+
logger.error(f'Error: ONNX model does not have required SonusAI hyperparameters, cannot proceed.')
|
144
|
+
raise SystemExit(1)
|
145
|
+
feature_mode = hparams.feature
|
146
|
+
in0name = sess_inputs[0].name
|
147
|
+
in0type = sess_inputs[0].type
|
148
|
+
out_names = [n.name for n in session.get_outputs()]
|
149
|
+
|
150
|
+
# frames x stride x feat_params
|
151
|
+
feature = get_feature_from_audio(audio=capture_audio, feature_mode=feature_mode)
|
175
152
|
save_figure(capture_png, capture_audio, feature)
|
176
153
|
logger.info(f'Wrote capture plots to {capture_png}')
|
177
154
|
|
@@ -182,19 +159,13 @@ def main() -> None:
|
|
182
159
|
f.create_dataset('feature', data=feature)
|
183
160
|
logger.info(f'Wrote feature with shape {feature.shape} to {h5_name}')
|
184
161
|
|
185
|
-
if
|
186
|
-
|
187
|
-
|
188
|
-
if model_is_fp16:
|
189
|
-
feature = np.float16(feature)
|
190
|
-
# run inference, ort session wants i.e. batch x tsteps x feat_params, outputs numpy BxTxFP or BxFP
|
191
|
-
predict = np.transpose(session.run(out_names, {in0name: np.transpose(feature,(1,0,2))})[0],(1,0,2))
|
192
|
-
else:
|
193
|
-
with torch.no_grad():
|
194
|
-
# model wants batch x timesteps x feature_parameters
|
195
|
-
predict = model(torch.tensor(feature).permute((1, 0, 2))).permute(1, 0, 2).numpy()
|
196
|
-
|
162
|
+
if in0type.find('float16') != -1:
|
163
|
+
logger.info(f'Detected input of float16, converting all feature inputs to that type.')
|
164
|
+
feature = np.float16(feature) # type: ignore
|
197
165
|
|
166
|
+
# Run inference, ort session wants batch x timesteps x feat_params, outputs numpy BxTxFP or BxFP
|
167
|
+
# Note full reshape not needed here since we assume speech enhancement type model, so a transpose suffices
|
168
|
+
predict = np.transpose(session.run(out_names, {in0name: np.transpose(feature, (1, 0, 2))})[0], (1, 0, 2))
|
198
169
|
|
199
170
|
if debug:
|
200
171
|
with h5py.File(h5_name, 'a') as f:
|