Skip to content

Commit 4be76e3

Browse files
committed
[release] JSNIRF V1 Draft-2
1 parent 1c24550 commit 4be76e3

File tree

4 files changed

+71
-20
lines changed

4 files changed

+71
-20
lines changed

ChangeLog.txt

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
= Change Log =
2+
3+
Major updates are marked with a "*"
4+
5+
== JSNIRF Spec Draft-2, FangQ <q.fang (a) neu.edu> ==
6+
7+
2025-03-23 [1c24550] [ci] fix spellchecking
8+
2025-03-23 [9d01cd1] [spec] update spec abstract, update wordlist
9+
2025-03-23 [7846561] [ci] add spellchecker
10+
2025-03-23*[5074dc3] [bug] add the missing SNIRFData.nirs object, sync SNIRF 1.2
11+
2025-03-23 [b3a0bdf] [lib] update submodule github URLs
12+
13+
== JSNIRF Spec Draft-1, FangQ <q.fang (a) neu.edu> ==
14+
15+
2022-03-15 [4eb46e0] update jsnirfy toolbox
16+
2022-02-22 [3430920] Update README.md
17+
2020-05-22 [e906c1f] add sample data, update jsnirfy
18+
2020-05-16 [6e745cf] Update to map the latest SNIRF data fileds
19+
2020-05-04 [ba60b53] Add project banner to README
20+
2019-11-05 [9d9a215] update jsnirf toolbox readme
21+
2019-11-05 [c23ea18] add jsnirfy as matlab parser
22+
2019-11-05 [e2bf825] separate jsnirf toolbox into a separate repo
23+
2019-10-30 [51cc620] add missing TimeUnit
24+
2019-10-30 [e52d47a] use correct MeasurentTime MeasurementDate default value
25+
2019-10-30 [5e30e0f] use the latest option of easyh5
26+
2019-10-01 [10fc8d3] update easyh5 module
27+
2019-10-01 [4b780f6] readd easyh5 submodule
28+
2019-10-01 [1da7860] update easyh5 url
29+
2019-09-28 [2be2603] collapse measurementList according to JSNIRF spec
30+
2019-09-19 [876547c] fix typos
31+
2019-09-19 [808d45e] add Changelog
32+
2019-09-19 [61def95] adding issues link
33+
2019-09-19 [8136520] use brain parts as code names, set default version to 1.0
34+
2019-09-19 [b4d357c] polishing snirf toolbox, handling root object names
35+
2019-09-19 [53966d4] pass variable name from savesnirf to saveh5
36+
2019-09-19 [4744840] jsnirf toolbox v0.4
37+
2019-09-19 [a9ffd3b] initial version of jsnirf toolbox
38+
2019-09-17 [1e93c02] remove tic toc for speed test
39+
2019-09-17 [3559dcb] a compact SNIRF MATLAB parser and converter to JSNIRF JSON file
40+
2019-06-23 [af57f8c] Minor language updates
41+
2019-06-21 [53663d0] Use the name "indexed group"
42+
2019-06-20 [33b3cf1] Correct minor typo
43+
2019-06-18 [55349ab] Add ... for metadatatags
44+
2019-06-18 [d7908c7] More language updates
45+
2019-06-17 [3f299de] Correct the position of formatVersion
46+
2019-06-17 [a354d90] Reformat the mapping table
47+
2019-06-17 [621db3b] Update mapping table, complete the summary section, add more mapping instructions
48+
2019-06-16 [3ebbb83] Fix typo in abstract, add link to SNIRF spec
49+
2019-06-14 [b115b86] Use unicode U+2000 to format space inside table
50+
2019-06-14 [8d34bcc] Update toc
51+
2019-06-14 [a741ce7] initial version

JSNIRF_specification.md

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
JSNIRF: A JSON/binary JSON extension to the SNIRF format
1+
JSNIRF: A Lightweight JSON/Binary JSON Extension to the SNIRF Format
22
============================================================
33

44
- **Copyright**: (C) 2019-2025 Qianqian Fang <q.fang at neu.edu>
55
- **License**: Apache License, Version 2.0
6-
- **Version**: V1 (Draft-2.preview)
6+
- **Version**: V1 (Draft-2)
77
- **URL**: https://neurojson.org/jsnirf/draft2
8-
- **Status**: Draft-2 is a work-in-progress
8+
- **Status**: Frozen on March 23, 2025. For future updates, please see the Development URL below
99
- **Development**: https://github.com/NeuroJSON/jsnirf
1010
- **Abstract**:
1111

1212
> This specification defines the JSNIRF standard format. The JSNIRF format
1313
allows one to store and extend the HDF5 based SNIRF format (.snirf) using
1414
JavaScript Object Notation (JSON) [RFC4627] and binary JSON serialization
15-
methods. It loss-lessly maps all SNIRF/HDF5 headers and data structures to
16-
a human-readable JSON-based wrapper. Use of JSON and JSNIRF formats to store
15+
methods. It losslessly maps all SNIRF metadata and data structures to a
16+
lighweight human-readable JSON-based wrapper. Use of JSON and JSNIRF formats to store
1717
SNIRF data makes it possible to rapidly index, exchange, and query large amount
1818
of SNIRF datasets and metadata using modern database engines where JSON is used
1919
as the underlying data exchange format. With the extension of JData annotations,
@@ -78,14 +78,14 @@ easy integration with other neuroanatomical or functional measurements
7878
that can be potentially stored using [JData-based formats](https://github.com/NeuroJSON/jdata)
7979

8080
Instead of using HDF5, JSNIRF utilizes [JavaScript Object Notation](https://json.org)
81-
(JSON) as the text-based storage format and [Binary JData](https://github.com/NeuroJSON/bjdata)
81+
(JSON) as the text-based storage format and [Binary JData, or BJData](https://github.com/NeuroJSON/bjdata)
8282
derived based on [Universal Binary JSON (UBJSON)](https://ubjson.org),
8383
as the binary interface to gain smaller file sizes and faster processing speed. The
8484
[JData specification](https://github.com/NeuroJSON/jdata/blob/master/JData_specification.md)
8585
provides the foundation for serializing complex hierarchical data using
86-
JSON/UBJSON constructs. This permits us to define language- and library-neutral
86+
JSON/BJData constructs. This permits us to define language- and library-neutral
8787
fNIRS data representations using the simple and extensible constructs
88-
using the JSON and UBJSON syntax. The use of JSON/UBJSON based JSNIRF data
88+
using the JSON and BJData syntax. The use of JSON/BJData based JSNIRF data
8989
files also extends reading and writing SNIRF in environments where the HDF5 format
9090
is not supported, such as MATLAB older than R2011a and GNU Octave.
9191

@@ -94,13 +94,13 @@ is not supported, such as MATLAB older than R2011a and GNU Octave.
9494

9595
In this specification, we define data containers that are capable of storing
9696
SNIRF-based fNIRS data structure, and allow one to convert SNIRF files to
97-
JSON and UBJSON based files for easy sharing, parsing and integration.
97+
JSON and BJData based files for easy sharing, parsing and integration.
9898

9999
The purpose of this document is to
100100

101101
- define a 1-to-1 mapping between the existing SNIRF data structures
102-
to a JSON/UBJSON-based flexible data structure to allow lossless conversion
103-
from HDF5 data to JSON/UBJSON data
102+
to a JSON/BJData-based flexible data structure to allow lossless conversion
103+
from HDF5 data to JSON/BJData data
104104
- demonstrate a set of flexible mechanisms to extend the capability of the
105105
format to accommodate additional physiological, anatomical and multi-modal data
106106

@@ -115,11 +115,11 @@ Grammar
115115

116116
All JSNIRF files are JData specification compliant. The same as JData, it has
117117
both a text format based on JSON serialization and a binary format based on
118-
the UBJSON serialization scheme. The two forms can be converted from one
118+
the BJData serialization scheme. The two forms can be converted from one
119119
to another.
120120

121121
Briefly, the text-based JSNIRF is a valid JSON file with the extension to
122-
support concatenated JSON objects; the binary-format JSNIRF is a valid UBJSON
122+
support concatenated JSON objects; the binary-format JSNIRF is a valid BJData
123123
file with the extended syntax to support N-D array. Please refer to the JData
124124
specification for the definitions.
125125

@@ -390,16 +390,16 @@ Summary
390390
----------
391391

392392
In summary, this specification defines a 1-to-1 mapping between the HDF5-based SNIRF storage
393-
format to JSON/UBJSON based JSNIRF format. Any previously generated SNIRF file can be 100%
394-
mapped to a JSNIRF document without losing any information. However, JSNIRF adds readability,
393+
format to JSON/BJData based JSNIRF format. Any previously generated SNIRF file can be 100%
394+
mapped to a JSNIRF document without losing information. However, JSNIRF adds readability,
395395
portability with lightweight and widely available parsers. It also allows one to easily
396396
combine NIRS measurements with other experimental data stored in JData-compliant
397397
formats, such as [JNIfTI](https://github.com/NeuroJSON/jnifti) or [JMesh](https://github.com/NeuroJSON/jmesh),
398398
especially in a multi-modal imaging study.
399399

400-
Compared to HDF5, JSON and UBJSON is significantly simpler when encoding and decoding
400+
Compared to HDF5, JSON and BJData are significantly simpler when encoding and decoding
401401
unstructured data, such as the data structure defined in a SNIRF file.
402-
The broad availability of JSON and UBJSON parsers, along with the simple underlying syntax, allows one
402+
The broad availability of JSON and BJData parsers, along with the simple underlying syntax, allows one
403403
to easily share, parse and process such data files without imposing extensive programming
404404
overhead. The flexible data organization and referencing mechanisms offered by the underlying
405405
JData specification make it possible to record and share large scale complex neuroimaging

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ for convenient editing and version control.
1414

1515
The JSNIRF format is built upon the [JData specification](https://github.com/NeuroJSON/jdata/) -
1616
a generalized framework to serialize and convert complex scientific data.
17-
The JSNIRF specification is compatible with [JData specification Draft 1](https://github.com/NeuroJSON/jdata/commit/f8fc8f1b814e7a4654b7b0092de15eaafa94d3da).
17+
The JSNIRF specification is compatible with [JData specification Draft 3](https://neurojson.org/jdata/draft3).
1818

1919
## How to participate
2020

@@ -27,7 +27,7 @@ draft of this file specification, including
2727
question, report a bug, provide a feature request, or simply propose
2828
general discussions. Please use URLs or keywords to link your discussion
2929
to a specific line/section/topic in the document.
30-
- [Write short comments on Request for Comments (RFC) commits](https://github.com/NeuroJSON/jsnirf/)
30+
- [Write short comments on Request for Comments (RFC) commits](https://github.com/NeuroJSON/jsnirf/releases/tag/Draft-2)
3131
- A milestone version of the specification will be associated with an
3232
RFC (Request for comments) commit (where the entire file is removed
3333
and re-added so that every line appears in such comment). One can

0 commit comments

Comments
 (0)