import json
import subprocess
from shutil import rmtree
from clinicaio import (
BIDSDataset,
BIDSDatasetDescription,
BIDSDatasetType,
DataType,
FileExtension,
ImageScanInfo,
SessionInfo,
SubjectInfo,
)
rmtree(test_bids_write_path, ignore_errors=True)
dataset = BIDSDataset(
bids_path=test_bids_write_path,
description=BIDSDatasetDescription.new(
BIDSDatasetType.RAW, name="TEST BIDS1", bids_version="1.10.0"
),
)
subject = dataset.add_subject(
id="sub-ONE",
info=SubjectInfo(
{
"data1": 345,
"data2": "texte",
"data3": None,
}
),
)
session = subject.add_session(
id="ses-ONE",
info=SessionInfo(
acquisition_time="2026-04-22T01:02:03Z",
foo=37,
bar=3929,
baz="texte",
),
)
session2 = subject.add_session(
id="ses-N2",
info=SessionInfo(
acquisition_time="2026-04-20T11:12:13Z",
foo=37,
bar=3929,
baz="texte",
),
)
image1 = session.write_image(
data_type=DataType.PET,
nifti_extension=FileExtension.NII_GZ,
entities={"trc": "18FFDG", "task": "rest"},
suffix="T1w",
scan_info=ImageScanInfo(
a="1a",
b="1b",
),
)
with open(image1.get_nifti_image_path(), mode="x") as f:
print("NIFTI1", file=f)
image2 = session.write_image(
data_type=DataType.ANAT,
nifti_extension=FileExtension.NII_GZ,
entities={"trc": "11CPIB", "task": "rest"},
suffix="T1w",
scan_info=ImageScanInfo(
b="2b",
c="2c",
),
)
with open(image2.get_nifti_image_path(), mode="x") as f:
print("NIFTI2", file=f)
with open(image1.get_image_companion_path(FileExtension.JSON), "x") as f:
json.dump(
obj={
"name": "test",
"size": 3092,
},
fp=f,
)
dataset.write_to_folder(readme="TEST README BIDS")
with dataset.write_root_file("LICENSE") as f:
print("foobar", file=f)
with dataset.write_root_file("data.bin", write_binary=True) as f:
f.write(b"foobar")
f.flush()