From 6f48b09750c2f0bc15946b05c6a49608875bce7f Mon Sep 17 00:00:00 2001 From: Jamie Forth Date: Sun, 5 Jan 2025 21:28:38 +0000 Subject: [PATCH 1/5] Add data_with_empty_streams.xdf --- data_with_empty_streams.xdf | Bin 0 -> 8997 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data_with_empty_streams.xdf diff --git a/data_with_empty_streams.xdf b/data_with_empty_streams.xdf new file mode 100644 index 0000000000000000000000000000000000000000..4de4ccbec9a8d112fb764150a06b2b3ae36bead8 GIT binary patch literal 8997 zcmeHMU2I%O6}DriwL{cKv_KwEu`K?iXz$M4`MYD5Eh$bU3PMHjPyxldd-pC`vOm`D zIw1s7Bq~y=2q7NYhtR4L;sqprREbi7QUpkG6j7C*@8+{JYD*}_hi zC&tFM;CJj2^QW^I(A3_zrb^;6@;9$OR>Y zSr}RavIm2U#IbgzDYI?z12$*I3+BxHHO`i1XM|i~!oN_^(NUvH7r48cZ!1E+wuCvNk(l+uB{`QFzKRmK?H)3?`b6*;J(#TD-^0)W= z%E`BUe8S32AkQCt-pTKe-a2md4PpQ6m#3Y)#V;NofBV+4kN#lqv#0*G`{u`PdS-9` z8>h}>b8dhB-zSczbN;3NhQ%;*p6kEq| zF=x7_BY)np{Kpjk^It#h@SoluIQbI~-ssl!oBOzvFMEl;!N2oQcR2acW7AJ=w5DSZ ze`@*f>74V=B(|G1efpl7lfU@S^KMN)J+|oNuN>X#))ee*I{AAKzI=Rqc4ExotyE$HokMh?pdPqlf^l5KDA_g$Ep#lllkc9pZwPHh0NZ& zUUxn^{N{I^eCqMnoW0+B^?>PFDlb@dYb=7#q%&R|i#>p?7 z$Bw7b{fUn}>*RKoLw>!{Sg~dgZo#}$W@Jcr+DOtk{m(znF3+xG-I2eZbMiBfZgEz~ z_Ule=tw^oD?d6+KW;i?Ivm54K@VkkVGB>B$i&yWTa`Ft@gxn+VT9IeA7*BohmG?XS zspp=v@nCj&&)N5#yfcSya9*nJa`Ftv%zO7OEBe{I2LFv0KI`;veH`(5iCs1rp6C>ldr}<|MYj9+~7~%gIRB|X}RuwPI8@6X*7GdtuWU$Ncr}nxii4w##34mtu&)J zXXI6InqBjX7=9(EQRxG^6{q(s8g~Y(pDR(T8|`1{HX8kS(63gK57mmjLo)XGz9+RH zI9w@#7S75m2g24;TrDwADjjeoloEkdDlQSz<=MeXIfKgnuRtmT$%wB4b7UKW^gVQ| z3YDKJDG8&jASSbB3STmchIR;&dpImo9iXf514%?tGnqA021+s9P7Oh#wIM#y0d9BT z07^tbE4j5YQ1B{RjvSXGqL9W)iAyO&PR^OIl2RT}xKc62gn=|i*URmX zFjh*RQC|l+E14$*Gm~kdxxy|Mv{G0r87{)i1>VrYM}?HuN-j9rJVr@hR_`H zkMAL6DXvj{?fXRfx?rsNHg7p-1Tmk(WFF(v=O7-e9<)|8%Tjv5l`i-5n95T)x&lyZ z$rP8gV45ZTqHyag^GoNrWtNK2fGQ@LAO;fCUN&Ms}{S)lmb{`j8qeP0kFc>vD{ zzaVBpFagJ&kBWH-hS_6#7}E}23B!N@E=MU)xjGzzvbrXo&`@a3IqD7q)MRkW>S3lq@_UY zs{jn8i`toyNPyNSZzuI6=n9ETG?Sq0qEVW%2>LTkHw!auQ?R$-^4u1UYG>M~_!P_B zEX=e~!8Nhwn}%tb1UxBxy;+zElgI!(KI*=2$Ry^#^}oR+gmZjpn+qxCQRI^j0!n27 z3cs>;1ec%`?M4n0q)!x%C7=^cP@Ibv<%CL1UyrYsbC}9Q;(|v|LJ=JaJr${U>2b$r z0mC6NM|eWu8*CEbFH?jU&idrI!_kPXlTDf_7>RY`$fI~ru-+w1LbSj)=lP|hERTel zFbUPLXN@~Y# Date: Wed, 29 Jan 2025 17:27:57 +0000 Subject: [PATCH 2/5] Update test file names: Remove `data_with_` prefix --- data_with_clock_resets.xdf => clock_resets.xdf | Bin data_with_empty_streams.xdf => empty_streams.xdf | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename data_with_clock_resets.xdf => clock_resets.xdf (100%) rename data_with_empty_streams.xdf => empty_streams.xdf (100%) diff --git a/data_with_clock_resets.xdf b/clock_resets.xdf similarity index 100% rename from data_with_clock_resets.xdf rename to clock_resets.xdf diff --git a/data_with_empty_streams.xdf b/empty_streams.xdf similarity index 100% rename from data_with_empty_streams.xdf rename to empty_streams.xdf From 0c50f49bf853bd0119ca55df7c961c4668e1b55f Mon Sep 17 00:00:00 2001 From: Jamie Forth Date: Wed, 29 Jan 2025 21:17:02 +0000 Subject: [PATCH 3/5] Update README * add test file descriptions - minimal.xdf - clock_resets.xdf - empty_streams.xdf --- README.md | 432 ++++++++++++++++++++++++++++++++++++++++++++++++++++- minimal.md | 78 ---------- 2 files changed, 430 insertions(+), 80 deletions(-) delete mode 100644 minimal.md diff --git a/README.md b/README.md index 6d953cc..b84367a 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,431 @@ -# example-files +# XDF example files + +Example files to test XDF readers. + +* [minimal.xdf](#minimal.xdf) +* [clock\_resets.xdf](#clock_resets.xdf) +* [empty\_streams.xdf](#empty_streams.xdf) + +## minimal.xdf + +Minimal example file with two streams. + +### Stream 0 +#### Header + +``` xml + + SendDataC + EEG + 3 + 10 + int16 + 50942.723319709003 + + xdfwriter_11_int + +``` + +#### Footer + +``` xml + + LabRecorder xdfwriter + 5.1 + 5.9 + 9 + + + + -.01 + + + + -.02 + + + +``` + +#### Time-series data + +3 `int16` channels, 9 samples + +Data: + +``` +[192, 255, 238], +[ 12, 22, 32], +[ 13, 23, 33], +[ 14, 24, 34], +[ 15, 25, 35], +[ 12, 22, 32], +[ 13, 23, 33], +[ 14, 24, 34], +[ 15, 25, 35] +``` + +Timestamps: 5.1 to 5.9 in .1 steps + +### Stream 0x02C0FFEE / 46202862 +#### Header + +``` xml + + SendDataString + StringMarker + 1 + 10 + string + 50942.723319709003 + + xdfwriter_11_str + +``` + +#### Footer + +Identical to stream 0. + +#### Time-series data + +1 string channel, 9 samples + +Data: `[ (the XML footer), 'Hello', 'World', 'from', 'LSL', 'Hello', 'World', 'from', 'LSL']` + +Timestamps: as above + + +## clock\_resets.xdf +### Stream 1 +#### Header + +``` xml + + MyMarkerStream + Markers + 1 + 0 + string + myuidw43536 + 1.1000000000000001 + 564076.02850699995 + 1efcb4a6-8894-4014-b404-4b6f6b2205f2 + default + BP-LP-022 + + 16572 + 16572 + + 16572 + 16572 + + +``` + +#### Footer + +``` xml + + 653153.2121885 + 259.6538279 + 174 + + + + -652340.2838639501 + + + + +``` + +### Stream 2 +#### Header + +``` xml + + BioSemi + EEG + 8 + 100 + float32 + myuid34234 + 1.1000000000000001 + 653103.26692229998 + fa3e14ab-b621-480e-a9d5-c740f0e47140 + default + BP-LP-022 + + 16573 + 16573 + + 16573 + 16573 + + +``` + +#### Footer +``` xml + + 653150.379117 + 261.9267033 + 27814 + + + + -652340.28383985 + + + + +``` + +## empty_streams.xdf + +Example containing empty and non-empty data and marker streams. + +### Stream 1 +#### Header + +``` xml + + Data stream: test stream 0 counter + data + 1 + int32 + test_stream.py:525352:0 + 1.000000000000000 + 1.100000000000000 + 401309.0364671120 + 25e1bd13-340f-499c-bb91-5d1e75cec535 + default + kassia + + 16576 + 16575 + + 0 + 0 + + pylsltools + + + + misc + + + + +``` + +#### Footer + +`sample_count` is off by one. + +``` xml + + 401340.7970979316 + 401350.7970979316 + 9 + + + + -3.67984757758677e-05 + + + + + -3.553100395947695e-05 + + + +``` + +#### Time-series data + +1 `int32` channel, 10 samples + +| time_stamp | ch:00 | +|------------+-------| +| 401341 | 0 | +| 401342 | 1 | +| 401343 | 2 | +| 401344 | 3 | +| 401345 | 4 | +| 401346 | 5 | +| 401347 | 6 | +| 401348 | 7 | +| 401349 | 8 | +| 401350 | 9 | + +### Stream 2 +#### Header + +``` xml + + Empty data stream: test stream 0 counter + data + 1 + float32 + test_stream.py:525257:0 + 1.000000000000000 + 1.100000000000000 + 401285.3015719900 + 30608cb9-b177-420d-9d60-3ce0f07949af + default + kassia + + 16574 + 16573 + + 0 + 0 + + pylsltools + + + + misc + + + + +``` + +#### Footer + +``` xml + + 0 + 0 + 0 + + + + -3.130998811684549e-05 + + + + + -1.937249908223748e-05 + + + +``` + +#### Time-series data + +Empty stream. + +### Stream 3 +#### Header + +``` xml + + Empty marker stream: test stream 0 counter + data + 1 + string + test_stream.py:525304:0 + 0.000000000000000 + 1.100000000000000 + 401297.3977076210 + 3ece2528-0c45-4e6f-9a00-7eb1a7f7bd84 + default + kassia + + 16575 + 16574 + + 0 + 0 + + pylsltools + + +``` + +#### Footer + +``` xml + + 0 + 0 + 0 + + + + -2.594449324533343e-05 + + + + + -1.620649709366262e-05 + + + +``` + +#### Time-series data + +Empty stream. + +### Stream 4 +#### Header + +``` xml + + ctrl + control + 1 + string + kassia + 0.000000000000000 + 1.100000000000000 + 401261.9233872890 + eb31d8f6-b57a-4e45-bc5a-fa98573d6503 + default + kassia + + 16573 + 16572 + + 0 + 0 + + pylsltools + + +``` + +#### Footer + +``` xml + + 401340.597121355 + 401340.597121355 + 0 + + + + -2.898101229220629e-05 + + + + + -2.722250064834952e-05 + + + +``` + +#### Time-series data + +1 `string` channel, 1 sample + +| time_stamp | 0 | +|------------+--------------| +| 401341 | {"state": 2} | -Minimal example files to test XDF readers diff --git a/minimal.md b/minimal.md deleted file mode 100644 index e817324..0000000 --- a/minimal.md +++ /dev/null @@ -1,78 +0,0 @@ -This is a minimal example file with two streams. - -# Stream 0 - -3 int16 channels, 9 samples - -Data: - -``` -[192, 255, 238], -[ 12, 22, 32], -[ 13, 23, 33], -[ 14, 24, 34], -[ 15, 25, 35], -[ 12, 22, 32], -[ 13, 23, 33], -[ 14, 24, 34], -[ 15, 25, 35] -``` - -Timestamps: 5.1 to 5.9 in .1 steps - -The stream's XML header: -``` - - SendDataC - EEG - 3 - 10 - int16 - 50942.723319709003 - - xdfwriter_11_int - -``` -its footer: -``` - - LabRecorder xdfwriter - 5.1 - 5.9 - 9 - - - - -.01 - - - - -.02 - - - -``` - - -# Stream 0x02C0FFEE / 46202862 - -1 string channel, 9 samples - -Data: `[ (the XML footer), 'Hello', 'World', 'from', 'LSL', 'Hello', 'World', 'from', 'LSL']` - -Timestamps: as above - -The stream's XML header: -``` - - SendDataString - StringMarker - 1 - 10 - string - 50942.723319709003 - - xdfwriter_11_str - -``` -This stream's footer is identical to the previous one. \ No newline at end of file From 3337b2d1222af97e1d719134bca2fc321d21e5ee Mon Sep 17 00:00:00 2001 From: Jamie Forth Date: Wed, 29 Jan 2025 21:42:34 +0000 Subject: [PATCH 4/5] README: Fix formatting --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index b84367a..fca4273 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,11 @@ Example files to test XDF readers. -* [minimal.xdf](#minimal.xdf) -* [clock\_resets.xdf](#clock_resets.xdf) -* [empty\_streams.xdf](#empty_streams.xdf) +* [minimal.xdf](#minimal) +* [clock\_resets.xdf](#clock_resets) +* [empty\_streams.xdf](#empty_streams) -## minimal.xdf +## minimal.xdf Minimal example file with two streams. @@ -96,7 +96,7 @@ Data: `[ (the XML footer), 'Hello', 'World', 'from', 'LSL', 'Hello', 'World', 'f Timestamps: as above -## clock\_resets.xdf +## clock\_resets.xdf ### Stream 1 #### Header @@ -182,7 +182,7 @@ Timestamps: as above ``` -## empty_streams.xdf +## empty_streams.xdf Example containing empty and non-empty data and marker streams. @@ -248,7 +248,7 @@ Example containing empty and non-empty data and marker streams. 1 `int32` channel, 10 samples | time_stamp | ch:00 | -|------------+-------| +|------------|-------| | 401341 | 0 | | 401342 | 1 | | 401343 | 2 | @@ -426,6 +426,6 @@ Empty stream. 1 `string` channel, 1 sample | time_stamp | 0 | -|------------+--------------| +|------------|--------------| | 401341 | {"state": 2} | From 6ef508b2902be1b0151a9ec0f91fe2dced7a4900 Mon Sep 17 00:00:00 2001 From: Jamie Forth Date: Thu, 30 Jan 2025 15:42:07 +0000 Subject: [PATCH 5/5] README: remove custom anchors --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index fca4273..4cfcd37 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,11 @@ Example files to test XDF readers. -* [minimal.xdf](#minimal) -* [clock\_resets.xdf](#clock_resets) -* [empty\_streams.xdf](#empty_streams) +* [minimal.xdf](#minimalxdf) +* [clock\_resets.xdf](#clock_resetsxdf) +* [empty\_streams.xdf](#empty_streamsxdf) -## minimal.xdf +## minimal.xdf Minimal example file with two streams. @@ -96,7 +96,7 @@ Data: `[ (the XML footer), 'Hello', 'World', 'from', 'LSL', 'Hello', 'World', 'f Timestamps: as above -## clock\_resets.xdf +## clock\_resets.xdf ### Stream 1 #### Header @@ -182,7 +182,7 @@ Timestamps: as above ``` -## empty_streams.xdf +## empty\_streams.xdf Example containing empty and non-empty data and marker streams.