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,43 @@
1
+ Name Default Flags Dimensions Type Comment
2
+ GLOBAL:Conventions SOFA rm attribute
3
+ GLOBAL:Version 1.0 rm attribute
4
+ GLOBAL:SOFAConventions SimpleFreeFieldHRIR rm attribute This convention set is for HRIRs recorded under free-field conditions or other IRs created under conditions where room information is irrelevant
5
+ GLOBAL:SOFAConventionsVersion 0.4 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
23
+ ListenerPosition:Type cartesian m attribute
24
+ ListenerPosition:Units meter m attribute
25
+ ReceiverPosition [0 0.09 0; 0 -0.09 0] m rCI, rCM double
26
+ ReceiverPosition:Type cartesian m attribute
27
+ ReceiverPosition:Units meter m attribute
28
+ SourcePosition [0 0 1] m IC, MC double Source position is assumed to vary for different directions/positions around the listener
29
+ SourcePosition:Type spherical m attribute
30
+ SourcePosition:Units degree, degree, meter m attribute
31
+ EmitterPosition [0 0 0] m eCI, eCM double
32
+ EmitterPosition:Type cartesian m attribute
33
+ EmitterPosition:Units meter m attribute
34
+ GLOBAL:DatabaseName m attribute name of the database to which these data belong
35
+ GLOBAL:ListenerShortName m attribute ID of the subject from the database
36
+ ListenerUp [0 0 1] m IC, MC double
37
+ ListenerView [1 0 0] m IC, MC double
38
+ ListenerView:Type cartesian m attribute
39
+ ListenerView:Units meter m attribute
40
+ Data.IR [1 1] m mRn double
41
+ Data.SamplingRate 48000 m I double
42
+ Data.SamplingRate:Units hertz m attribute
43
+ Data.Delay [0 0] m IR, MR double
@@ -0,0 +1,333 @@
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": "SimpleFreeFieldHRIR",
18
+ "flags": "rm",
19
+ "dimensions": null,
20
+ "type": "attribute",
21
+ "comment": "This convention set is for HRIRs recorded under free-field conditions or other IRs created under conditions where room information is irrelevant"
22
+ },
23
+ "GLOBAL:SOFAConventionsVersion": {
24
+ "default": "0.4",
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": null,
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": "free field",
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": "name of the database to which these data belong"
148
+ },
149
+ "GLOBAL:ListenerShortName": {
150
+ "default": "",
151
+ "flags": "m",
152
+ "dimensions": null,
153
+ "type": "attribute",
154
+ "comment": "ID of the subject from the database"
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": "meter",
176
+ "flags": "m",
177
+ "dimensions": null,
178
+ "type": "attribute",
179
+ "comment": ""
180
+ },
181
+ "ReceiverPosition": {
182
+ "default": [
183
+ [
184
+ 0,
185
+ 0.09,
186
+ 0
187
+ ],
188
+ [
189
+ 0,
190
+ -0.09,
191
+ 0
192
+ ]
193
+ ],
194
+ "flags": "m",
195
+ "dimensions": "rCI, rCM",
196
+ "type": "double",
197
+ "comment": ""
198
+ },
199
+ "ReceiverPosition:Type": {
200
+ "default": "cartesian",
201
+ "flags": "m",
202
+ "dimensions": null,
203
+ "type": "attribute",
204
+ "comment": ""
205
+ },
206
+ "ReceiverPosition:Units": {
207
+ "default": "meter",
208
+ "flags": "m",
209
+ "dimensions": null,
210
+ "type": "attribute",
211
+ "comment": ""
212
+ },
213
+ "SourcePosition": {
214
+ "default": [
215
+ 0,
216
+ 0,
217
+ 1
218
+ ],
219
+ "flags": "m",
220
+ "dimensions": "IC, MC",
221
+ "type": "double",
222
+ "comment": "Source position is assumed to vary for different directions/positions around the listener"
223
+ },
224
+ "SourcePosition:Type": {
225
+ "default": "spherical",
226
+ "flags": "m",
227
+ "dimensions": null,
228
+ "type": "attribute",
229
+ "comment": ""
230
+ },
231
+ "SourcePosition:Units": {
232
+ "default": "degree, degree, meter",
233
+ "flags": "m",
234
+ "dimensions": null,
235
+ "type": "attribute",
236
+ "comment": ""
237
+ },
238
+ "EmitterPosition": {
239
+ "default": [
240
+ 0,
241
+ 0,
242
+ 0
243
+ ],
244
+ "flags": "m",
245
+ "dimensions": "eCI, eCM",
246
+ "type": "double",
247
+ "comment": ""
248
+ },
249
+ "EmitterPosition:Type": {
250
+ "default": "cartesian",
251
+ "flags": "m",
252
+ "dimensions": null,
253
+ "type": "attribute",
254
+ "comment": ""
255
+ },
256
+ "EmitterPosition:Units": {
257
+ "default": "meter",
258
+ "flags": "m",
259
+ "dimensions": null,
260
+ "type": "attribute",
261
+ "comment": ""
262
+ },
263
+ "ListenerUp": {
264
+ "default": [
265
+ 0,
266
+ 0,
267
+ 1
268
+ ],
269
+ "flags": "m",
270
+ "dimensions": "IC, MC",
271
+ "type": "double",
272
+ "comment": ""
273
+ },
274
+ "ListenerView": {
275
+ "default": [
276
+ 1,
277
+ 0,
278
+ 0
279
+ ],
280
+ "flags": "m",
281
+ "dimensions": "IC, MC",
282
+ "type": "double",
283
+ "comment": ""
284
+ },
285
+ "ListenerView:Type": {
286
+ "default": "cartesian",
287
+ "flags": "m",
288
+ "dimensions": null,
289
+ "type": "attribute",
290
+ "comment": ""
291
+ },
292
+ "ListenerView:Units": {
293
+ "default": "meter",
294
+ "flags": "m",
295
+ "dimensions": null,
296
+ "type": "attribute",
297
+ "comment": ""
298
+ },
299
+ "Data.IR": {
300
+ "default": [
301
+ 1,
302
+ 1
303
+ ],
304
+ "flags": "m",
305
+ "dimensions": "mRn",
306
+ "type": "double",
307
+ "comment": ""
308
+ },
309
+ "Data.SamplingRate": {
310
+ "default": 48000,
311
+ "flags": "m",
312
+ "dimensions": "I",
313
+ "type": "double",
314
+ "comment": ""
315
+ },
316
+ "Data.SamplingRate:Units": {
317
+ "default": "hertz",
318
+ "flags": "m",
319
+ "dimensions": null,
320
+ "type": "attribute",
321
+ "comment": ""
322
+ },
323
+ "Data.Delay": {
324
+ "default": [
325
+ 0,
326
+ 0
327
+ ],
328
+ "flags": "m",
329
+ "dimensions": "IR, MR",
330
+ "type": "double",
331
+ "comment": ""
332
+ }
333
+ }
@@ -0,0 +1,44 @@
1
+ Name Default Flags Dimensions Type Comment
2
+ GLOBAL:Conventions SOFA rm attribute
3
+ GLOBAL:Version 1.0 rm attribute
4
+ GLOBAL:SOFAConventions SimpleFreeFieldTF rm attribute This conventions is for TFs created under conditions where room information is irrelevant
5
+ GLOBAL:SOFAConventionsVersion 0.4 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 TF rm attribute
13
+ GLOBAL:History attribute
14
+ GLOBAL:License No license provided, ask the author for permission m attribute
15
+ GLOBAL:ListenerShortName m attribute ID of the subject from the database
16
+ GLOBAL:Organization m attribute
17
+ GLOBAL:References attribute
18
+ GLOBAL:RoomType free field m attribute
19
+ GLOBAL:Origin attribute
20
+ GLOBAL:DateCreated m attribute
21
+ GLOBAL:DateModified m attribute
22
+ GLOBAL:Title m attribute
23
+ ListenerPosition [0 0 0] m IC, MC double
24
+ ListenerPosition:Type cartesian m attribute
25
+ ListenerPosition:Units meter m attribute
26
+ ReceiverPosition [0 0.09 0; 0 -0.09 0] m rCI, rCM double
27
+ ReceiverPosition:Type cartesian m attribute
28
+ ReceiverPosition:Units meter m attribute
29
+ SourcePosition [0 0 1] m IC, MC double Source position is assumed to vary for different directions/positions around the listener
30
+ SourcePosition:Type spherical m attribute
31
+ SourcePosition:Units degree, degree, meter m attribute
32
+ EmitterPosition [0 0 0] m eCI, eCM double
33
+ EmitterPosition:Type cartesian m attribute
34
+ EmitterPosition:Units meter m attribute
35
+ GLOBAL:DatabaseName m attribute name of the database to which these data belong
36
+ ListenerUp [0 0 1] m IC, MC double
37
+ ListenerView [1 0 0] m IC, MC double
38
+ ListenerView:Type cartesian m attribute
39
+ ListenerView:Units meter m attribute
40
+ Data.Real [1 1] m mRn double
41
+ Data.Imag [0 0] m MRN double
42
+ N 0 m N double
43
+ N:LongName frequency attribute
44
+ N:Units hertz attribute