sofar 1.2.1__py3-none-any.whl

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.
Files changed (105) hide show
  1. docs/Makefile +20 -0
  2. docs/api_reference.rst +20 -0
  3. docs/conf.py +167 -0
  4. docs/contributing.rst +1 -0
  5. docs/history.rst +1 -0
  6. docs/index.rst +4 -0
  7. docs/make.bat +36 -0
  8. docs/readme.rst +1 -0
  9. docs/resources/conventions.py +162 -0
  10. docs/resources/working_with_sofa_HRIR_lateral.png +0 -0
  11. docs/resources/working_with_sofa_source_horizontal.png +0 -0
  12. docs/resources/working_with_sofa_source_lateral.png +0 -0
  13. docs/sofar.rst +82 -0
  14. sofar/__init__.py +28 -0
  15. sofar/io.py +427 -0
  16. sofar/sofa.py +1835 -0
  17. sofar/sofa_conventions/VERSION +1 -0
  18. sofar/sofa_conventions/conventions/AnnotatedEmitterAudio_0.2.csv +46 -0
  19. sofar/sofa_conventions/conventions/AnnotatedEmitterAudio_0.2.json +353 -0
  20. sofar/sofa_conventions/conventions/AnnotatedReceiverAudio_0.2.csv +46 -0
  21. sofar/sofa_conventions/conventions/AnnotatedReceiverAudio_0.2.json +353 -0
  22. sofar/sofa_conventions/conventions/FreeFieldDirectivityTF_1.1.csv +59 -0
  23. sofar/sofa_conventions/conventions/FreeFieldDirectivityTF_1.1.json +444 -0
  24. sofar/sofa_conventions/conventions/FreeFieldHRIR_1.0.csv +43 -0
  25. sofar/sofa_conventions/conventions/FreeFieldHRIR_1.0.json +333 -0
  26. sofar/sofa_conventions/conventions/FreeFieldHRTF_1.0.csv +44 -0
  27. sofar/sofa_conventions/conventions/FreeFieldHRTF_1.0.json +340 -0
  28. sofar/sofa_conventions/conventions/GeneralFIR-E_2.0.csv +37 -0
  29. sofar/sofa_conventions/conventions/GeneralFIR-E_2.0.json +270 -0
  30. sofar/sofa_conventions/conventions/GeneralFIR_1.0.csv +40 -0
  31. sofar/sofa_conventions/conventions/GeneralFIR_1.0.json +295 -0
  32. sofar/sofa_conventions/conventions/GeneralSOS_1.0.csv +40 -0
  33. sofar/sofa_conventions/conventions/GeneralSOS_1.0.json +306 -0
  34. sofar/sofa_conventions/conventions/GeneralTF-E_1.0.csv +38 -0
  35. sofar/sofa_conventions/conventions/GeneralTF-E_1.0.json +277 -0
  36. sofar/sofa_conventions/conventions/GeneralTF_1.0.csv +38 -0
  37. sofar/sofa_conventions/conventions/GeneralTF_1.0.json +277 -0
  38. sofar/sofa_conventions/conventions/GeneralTF_2.0.csv +38 -0
  39. sofar/sofa_conventions/conventions/GeneralTF_2.0.json +277 -0
  40. sofar/sofa_conventions/conventions/SimpleFreeFieldHRIR_1.0.csv +47 -0
  41. sofar/sofa_conventions/conventions/SimpleFreeFieldHRIR_1.0.json +369 -0
  42. sofar/sofa_conventions/conventions/SimpleFreeFieldHRSOS_1.0.csv +43 -0
  43. sofar/sofa_conventions/conventions/SimpleFreeFieldHRSOS_1.0.json +349 -0
  44. sofar/sofa_conventions/conventions/SimpleFreeFieldHRTF_1.0.csv +44 -0
  45. sofar/sofa_conventions/conventions/SimpleFreeFieldHRTF_1.0.json +340 -0
  46. sofar/sofa_conventions/conventions/SimpleFreeFieldSOS_1.0.csv +43 -0
  47. sofar/sofa_conventions/conventions/SimpleFreeFieldSOS_1.0.json +349 -0
  48. sofar/sofa_conventions/conventions/SimpleHeadphoneIR_1.0.csv +51 -0
  49. sofar/sofa_conventions/conventions/SimpleHeadphoneIR_1.0.json +396 -0
  50. sofar/sofa_conventions/conventions/SingleRoomMIMOSRIR_1.0.csv +78 -0
  51. sofar/sofa_conventions/conventions/SingleRoomMIMOSRIR_1.0.json +601 -0
  52. sofar/sofa_conventions/conventions/SingleRoomSRIR_1.0.csv +78 -0
  53. sofar/sofa_conventions/conventions/SingleRoomSRIR_1.0.json +601 -0
  54. sofar/sofa_conventions/conventions/deprecated/AnnotatedEmitterAudio_0.1.csv +46 -0
  55. sofar/sofa_conventions/conventions/deprecated/AnnotatedEmitterAudio_0.1.json +351 -0
  56. sofar/sofa_conventions/conventions/deprecated/AnnotatedReceiverAudio_0.1.csv +46 -0
  57. sofar/sofa_conventions/conventions/deprecated/AnnotatedReceiverAudio_0.1.json +351 -0
  58. sofar/sofa_conventions/conventions/deprecated/FreeFieldDirectivityTF_1.0.csv +58 -0
  59. sofar/sofa_conventions/conventions/deprecated/FreeFieldDirectivityTF_1.0.json +437 -0
  60. sofar/sofa_conventions/conventions/deprecated/GeneralFIRE_1.0.csv +37 -0
  61. sofar/sofa_conventions/conventions/deprecated/GeneralFIRE_1.0.json +270 -0
  62. sofar/sofa_conventions/conventions/deprecated/MultiSpeakerBRIR_0.3.csv +48 -0
  63. sofar/sofa_conventions/conventions/deprecated/MultiSpeakerBRIR_0.3.json +376 -0
  64. sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldHRIR_0.4.csv +43 -0
  65. sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldHRIR_0.4.json +333 -0
  66. sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldTF_0.4.csv +44 -0
  67. sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldTF_0.4.json +340 -0
  68. sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldTF_1.0.csv +44 -0
  69. sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldTF_1.0.json +340 -0
  70. sofar/sofa_conventions/conventions/deprecated/SimpleHeadphoneIR_0.1.csv +51 -0
  71. sofar/sofa_conventions/conventions/deprecated/SimpleHeadphoneIR_0.1.json +396 -0
  72. sofar/sofa_conventions/conventions/deprecated/SimpleHeadphoneIR_0.2.csv +51 -0
  73. sofar/sofa_conventions/conventions/deprecated/SimpleHeadphoneIR_0.2.json +396 -0
  74. sofar/sofa_conventions/conventions/deprecated/SingleRoomDRIR_0.2.csv +47 -0
  75. sofar/sofa_conventions/conventions/deprecated/SingleRoomDRIR_0.2.json +360 -0
  76. sofar/sofa_conventions/conventions/deprecated/SingleRoomDRIR_0.3.csv +47 -0
  77. sofar/sofa_conventions/conventions/deprecated/SingleRoomDRIR_0.3.json +360 -0
  78. sofar/sofa_conventions/conventions/deprecated/SingleTrackedAudio_0.1.csv +47 -0
  79. sofar/sofa_conventions/conventions/deprecated/SingleTrackedAudio_0.1.json +366 -0
  80. sofar/sofa_conventions/conventions/deprecated/SingleTrackedAudio_0.2.csv +51 -0
  81. sofar/sofa_conventions/conventions/deprecated/SingleTrackedAudio_0.2.json +397 -0
  82. sofar/sofa_conventions/rules/deprecations.json +13 -0
  83. sofar/sofa_conventions/rules/rules.json +819 -0
  84. sofar/sofa_conventions/rules/unit_aliases.json +11 -0
  85. sofar/sofa_conventions/rules/upgrade.json +226 -0
  86. sofar/sofa_conventions/write_upgrade_rules.py +139 -0
  87. sofar/sofa_conventions/write_verification_data.py +313 -0
  88. sofar/sofa_conventions/write_verification_rules.py +356 -0
  89. sofar/sofastream.py +301 -0
  90. sofar/update_conventions.py +449 -0
  91. sofar/utils.py +316 -0
  92. sofar-1.2.1.dist-info/LICENSE +22 -0
  93. sofar-1.2.1.dist-info/METADATA +136 -0
  94. sofar-1.2.1.dist-info/RECORD +105 -0
  95. sofar-1.2.1.dist-info/WHEEL +5 -0
  96. sofar-1.2.1.dist-info/top_level.txt +3 -0
  97. tests/__init__.py +0 -0
  98. tests/conftest.py +27 -0
  99. tests/test_deprecations.py +19 -0
  100. tests/test_io.py +349 -0
  101. tests/test_sofa.py +353 -0
  102. tests/test_sofa_upgrade_conventions.py +111 -0
  103. tests/test_sofa_verify.py +480 -0
  104. tests/test_sofastream.py +127 -0
  105. tests/test_utils.py +250 -0
@@ -0,0 +1,360 @@
1
+ {
2
+ "GLOBAL:Conventions": {
3
+ "default": "SOFA",
4
+ "flags": "rm",
5
+ "dimensions": null,
6
+ "type": "attribute",
7
+ "comment": ""
8
+ },
9
+ "GLOBAL:Version": {
10
+ "default": "1.0",
11
+ "flags": "rm",
12
+ "dimensions": null,
13
+ "type": "attribute",
14
+ "comment": ""
15
+ },
16
+ "GLOBAL:SOFAConventions": {
17
+ "default": "SingleRoomDRIR",
18
+ "flags": "rm",
19
+ "dimensions": null,
20
+ "type": "attribute",
21
+ "comment": "This convention stores arbitrary number of receivers while providing an information about the room. The main application is to store DRIRs for a single room."
22
+ },
23
+ "GLOBAL:SOFAConventionsVersion": {
24
+ "default": "0.3",
25
+ "flags": "rm",
26
+ "dimensions": null,
27
+ "type": "attribute",
28
+ "comment": ""
29
+ },
30
+ "GLOBAL:APIName": {
31
+ "default": "",
32
+ "flags": "rm",
33
+ "dimensions": null,
34
+ "type": "attribute",
35
+ "comment": ""
36
+ },
37
+ "GLOBAL:APIVersion": {
38
+ "default": "",
39
+ "flags": "rm",
40
+ "dimensions": null,
41
+ "type": "attribute",
42
+ "comment": ""
43
+ },
44
+ "GLOBAL:ApplicationName": {
45
+ "default": "",
46
+ "flags": null,
47
+ "dimensions": null,
48
+ "type": "attribute",
49
+ "comment": ""
50
+ },
51
+ "GLOBAL:ApplicationVersion": {
52
+ "default": "",
53
+ "flags": null,
54
+ "dimensions": null,
55
+ "type": "attribute",
56
+ "comment": ""
57
+ },
58
+ "GLOBAL:AuthorContact": {
59
+ "default": "",
60
+ "flags": "m",
61
+ "dimensions": null,
62
+ "type": "attribute",
63
+ "comment": ""
64
+ },
65
+ "GLOBAL:Comment": {
66
+ "default": "",
67
+ "flags": "m",
68
+ "dimensions": null,
69
+ "type": "attribute",
70
+ "comment": ""
71
+ },
72
+ "GLOBAL:DataType": {
73
+ "default": "FIR",
74
+ "flags": "rm",
75
+ "dimensions": null,
76
+ "type": "attribute",
77
+ "comment": ""
78
+ },
79
+ "GLOBAL:History": {
80
+ "default": "",
81
+ "flags": null,
82
+ "dimensions": null,
83
+ "type": "attribute",
84
+ "comment": ""
85
+ },
86
+ "GLOBAL:License": {
87
+ "default": "No license provided, ask the author for permission",
88
+ "flags": "m",
89
+ "dimensions": null,
90
+ "type": "attribute",
91
+ "comment": ""
92
+ },
93
+ "GLOBAL:Organization": {
94
+ "default": "",
95
+ "flags": "m",
96
+ "dimensions": null,
97
+ "type": "attribute",
98
+ "comment": ""
99
+ },
100
+ "GLOBAL:References": {
101
+ "default": "",
102
+ "flags": null,
103
+ "dimensions": null,
104
+ "type": "attribute",
105
+ "comment": ""
106
+ },
107
+ "GLOBAL:RoomType": {
108
+ "default": "reverberant",
109
+ "flags": "m",
110
+ "dimensions": null,
111
+ "type": "attribute",
112
+ "comment": ""
113
+ },
114
+ "GLOBAL:Origin": {
115
+ "default": "",
116
+ "flags": null,
117
+ "dimensions": null,
118
+ "type": "attribute",
119
+ "comment": ""
120
+ },
121
+ "GLOBAL:DateCreated": {
122
+ "default": "",
123
+ "flags": "m",
124
+ "dimensions": null,
125
+ "type": "attribute",
126
+ "comment": ""
127
+ },
128
+ "GLOBAL:DateModified": {
129
+ "default": "",
130
+ "flags": "m",
131
+ "dimensions": null,
132
+ "type": "attribute",
133
+ "comment": ""
134
+ },
135
+ "GLOBAL:Title": {
136
+ "default": "",
137
+ "flags": "m",
138
+ "dimensions": null,
139
+ "type": "attribute",
140
+ "comment": ""
141
+ },
142
+ "GLOBAL:DatabaseName": {
143
+ "default": "",
144
+ "flags": "m",
145
+ "dimensions": null,
146
+ "type": "attribute",
147
+ "comment": ""
148
+ },
149
+ "GLOBAL:RoomDescription": {
150
+ "default": "",
151
+ "flags": "m",
152
+ "dimensions": null,
153
+ "type": "attribute",
154
+ "comment": ""
155
+ },
156
+ "ListenerPosition": {
157
+ "default": [
158
+ 0,
159
+ 0,
160
+ 0
161
+ ],
162
+ "flags": "m",
163
+ "dimensions": "IC, MC",
164
+ "type": "double",
165
+ "comment": ""
166
+ },
167
+ "ListenerPosition:Type": {
168
+ "default": "cartesian",
169
+ "flags": "m",
170
+ "dimensions": null,
171
+ "type": "attribute",
172
+ "comment": ""
173
+ },
174
+ "ListenerPosition:Units": {
175
+ "default": "metre",
176
+ "flags": "m",
177
+ "dimensions": null,
178
+ "type": "attribute",
179
+ "comment": ""
180
+ },
181
+ "ReceiverPosition": {
182
+ "default": [
183
+ 0,
184
+ 0,
185
+ 0
186
+ ],
187
+ "flags": "m",
188
+ "dimensions": "RCI, RCM",
189
+ "type": "double",
190
+ "comment": ""
191
+ },
192
+ "ReceiverPosition:Type": {
193
+ "default": "cartesian",
194
+ "flags": "m",
195
+ "dimensions": null,
196
+ "type": "attribute",
197
+ "comment": ""
198
+ },
199
+ "ReceiverPosition:Units": {
200
+ "default": "metre",
201
+ "flags": "m",
202
+ "dimensions": null,
203
+ "type": "attribute",
204
+ "comment": ""
205
+ },
206
+ "SourcePosition": {
207
+ "default": [
208
+ 0,
209
+ 0,
210
+ 0
211
+ ],
212
+ "flags": "m",
213
+ "dimensions": "IC, MC",
214
+ "type": "double",
215
+ "comment": ""
216
+ },
217
+ "SourcePosition:Type": {
218
+ "default": "cartesian",
219
+ "flags": "m",
220
+ "dimensions": null,
221
+ "type": "attribute",
222
+ "comment": ""
223
+ },
224
+ "SourcePosition:Units": {
225
+ "default": "metre",
226
+ "flags": "m",
227
+ "dimensions": null,
228
+ "type": "attribute",
229
+ "comment": ""
230
+ },
231
+ "EmitterPosition": {
232
+ "default": [
233
+ 0,
234
+ 0,
235
+ 0
236
+ ],
237
+ "flags": "m",
238
+ "dimensions": "eCI, eCM",
239
+ "type": "double",
240
+ "comment": ""
241
+ },
242
+ "EmitterPosition:Type": {
243
+ "default": "cartesian",
244
+ "flags": "m",
245
+ "dimensions": null,
246
+ "type": "attribute",
247
+ "comment": ""
248
+ },
249
+ "EmitterPosition:Units": {
250
+ "default": "metre",
251
+ "flags": "m",
252
+ "dimensions": null,
253
+ "type": "attribute",
254
+ "comment": ""
255
+ },
256
+ "ListenerUp": {
257
+ "default": [
258
+ 0,
259
+ 0,
260
+ 1
261
+ ],
262
+ "flags": "m",
263
+ "dimensions": "IC, MC",
264
+ "type": "double",
265
+ "comment": ""
266
+ },
267
+ "ListenerView": {
268
+ "default": [
269
+ 1,
270
+ 0,
271
+ 0
272
+ ],
273
+ "flags": "m",
274
+ "dimensions": "IC, MC",
275
+ "type": "double",
276
+ "comment": ""
277
+ },
278
+ "ListenerView:Type": {
279
+ "default": "cartesian",
280
+ "flags": "m",
281
+ "dimensions": null,
282
+ "type": "attribute",
283
+ "comment": ""
284
+ },
285
+ "ListenerView:Units": {
286
+ "default": "metre",
287
+ "flags": "m",
288
+ "dimensions": null,
289
+ "type": "attribute",
290
+ "comment": ""
291
+ },
292
+ "SourceUp": {
293
+ "default": [
294
+ 0,
295
+ 0,
296
+ 1
297
+ ],
298
+ "flags": "m",
299
+ "dimensions": "IC, MC",
300
+ "type": "double",
301
+ "comment": ""
302
+ },
303
+ "SourceView": {
304
+ "default": [
305
+ -1,
306
+ 0,
307
+ 0
308
+ ],
309
+ "flags": "m",
310
+ "dimensions": "IC, MC",
311
+ "type": "double",
312
+ "comment": ""
313
+ },
314
+ "SourceView:Type": {
315
+ "default": "cartesian",
316
+ "flags": "m",
317
+ "dimensions": null,
318
+ "type": "attribute",
319
+ "comment": ""
320
+ },
321
+ "SourceView:Units": {
322
+ "default": "metre",
323
+ "flags": "m",
324
+ "dimensions": null,
325
+ "type": "attribute",
326
+ "comment": ""
327
+ },
328
+ "Data.IR": {
329
+ "default": [
330
+ 0
331
+ ],
332
+ "flags": "m",
333
+ "dimensions": "mrn",
334
+ "type": "double",
335
+ "comment": ""
336
+ },
337
+ "Data.SamplingRate": {
338
+ "default": 48000,
339
+ "flags": "m",
340
+ "dimensions": "I",
341
+ "type": "double",
342
+ "comment": ""
343
+ },
344
+ "Data.SamplingRate:Units": {
345
+ "default": "hertz",
346
+ "flags": "m",
347
+ "dimensions": null,
348
+ "type": "attribute",
349
+ "comment": ""
350
+ },
351
+ "Data.Delay": {
352
+ "default": [
353
+ 0
354
+ ],
355
+ "flags": "m",
356
+ "dimensions": "IR, MR",
357
+ "type": "double",
358
+ "comment": ""
359
+ }
360
+ }
@@ -0,0 +1,47 @@
1
+ Name Default Flags Dimensions Type Comment
2
+ GLOBAL:Conventions SOFA rm attribute
3
+ GLOBAL:Version 2.1 rm attribute
4
+ GLOBAL:SOFAConventions SingleTrackedAudio rm attribute
5
+ GLOBAL:SOFAConventionsVersion 0.1 rm attribute
6
+ GLOBAL:APIName rm attribute
7
+ GLOBAL:APIVersion rm attribute
8
+ GLOBAL:ApplicationName attribute
9
+ GLOBAL:ApplicationVersion attribute
10
+ GLOBAL:AuthorContact m attribute
11
+ GLOBAL:Comment attribute
12
+ GLOBAL:DataType FIR rm attribute
13
+ GLOBAL:History attribute
14
+ GLOBAL:License No license provided, ask the author for permission m attribute
15
+ GLOBAL:Organization m attribute
16
+ GLOBAL:References attribute
17
+ GLOBAL:RoomType free field m attribute
18
+ GLOBAL:Origin attribute
19
+ GLOBAL:DateCreated m attribute
20
+ GLOBAL:DateModified m attribute
21
+ GLOBAL:Title m attribute
22
+ ListenerPosition [0 0 0] m IC, MC double Position of the head. IC if not tracked, MC if tracked.
23
+ ListenerPosition:Type cartesian m attribute
24
+ ListenerPosition:Units metre m attribute
25
+ ReceiverPosition [0 0.09 0; 0 -0.09 0] m IC, RC, RCM double Position of the ears. RC if not tracked, RCM if tracked.
26
+ ReceiverPosition:Type cartesian m attribute
27
+ ReceiverPosition:Units metre m attribute
28
+ SourcePosition [0 0 0] m IC, MC double Position of the virtual ensemble. IC if not tracked, MC if tracked.
29
+ SourcePosition:Type cartesian m attribute
30
+ SourcePosition:Units metre m attribute
31
+ EmitterPosition [0 0 0] m eC, eCM double Position of the virtual source(s). eC if not tracked, eCM if tracked.
32
+ EmitterPosition:Type cartesian m attribute
33
+ EmitterPosition:Units metre m attribute
34
+ ListenerUp [0 0 1] m IC, MC double Must be of the same dimensionality as ListenerView.
35
+ ListenerView [1 0 0] m IC, MC double Orientation of the head. IC if not tracked, MC if tracked.
36
+ ListenerView:Type cartesian m attribute
37
+ ListenerView:Units metre m attribute
38
+ M 0 m m double Time stamp of the measurements in M,defines the size of M.
39
+ EmitterUp [0 0 0] EC, ECM double Must be of the same dimensionality as EmitterView.
40
+ EmitterView [0 0 0] EC, ECM double Orientation of the virtual source(s). EC if not tracked, ECM if tracked.
41
+ EmitterView:Type cartesian attribute
42
+ EmitterView:Units metre attribute
43
+ Data.Sample [0 0] m rn double n=number of audio samples
44
+ Data.SamplingRate 44100 m I double
45
+ Data.SamplingRate:Units hertz m attribute
46
+ M:LongName time m attribute Narrative name for M
47
+ M:Units second m attribute Units used for M