def test4DAppend(bidsArchive4D, validBidsI, imageMetadata): incrementAcquisitionValues(validBidsI) bidsArchive4D.appendIncremental(validBidsI) assert archiveHasMetadata(bidsArchive4D, imageMetadata) assert appendDataMatches(bidsArchive4D, validBidsI, startIndex=2) assert isValidBidsArchive(bidsArchive4D.rootPath)
def testDiskOutput(validBidsI, tmpdir): # Write the archive datasetRoot = os.path.join(tmpdir, "bids-pytest-dataset") validBidsI.writeToDisk(datasetRoot) # Validate the output can be opened by BidsArchive and verified against the # source BIDS-Incremental archive = BidsArchive(datasetRoot) archiveImage = archive.getImages()[0] # Remove pseudo entities to avoid conflict with the validBidsI metadata = archive.getSidecarMetadata(archiveImage, includeEntities=True) for entity in PYBIDS_PSEUDO_ENTITIES: metadata.pop(entity) incrementalFromArchive = BidsIncremental(archiveImage, metadata) assert incrementalFromArchive == validBidsI assert isValidBidsArchive(archive.rootPath) # Try only writing data datasetRoot = os.path.join(tmpdir, "bids-pytest-dataset-2") validBidsI.writeToDisk(datasetRoot, onlyData=True) assert not os.path.exists(os.path.join(datasetRoot, "README")) assert not os.path.exists( os.path.join(datasetRoot, "dataset_description.json"))
def testAppendNewSubject(bidsArchive4D, validBidsI): preSubjects = bidsArchive4D.getSubjects() validBidsI.setMetadataField("subject", "02") bidsArchive4D.appendIncremental(validBidsI) assert len(bidsArchive4D.getSubjects()) == len(preSubjects) + 1 assert appendDataMatches(bidsArchive4D, validBidsI) assert isValidBidsArchive(bidsArchive4D.rootPath)
def testEmptyArchiveAppend(validBidsI, imageMetadata, tmpdir): # Create in root with no BIDS-I, then append to make non-empty archive datasetRoot = Path(tmpdir, testEmptyArchiveAppend.__name__) archive = BidsArchive(datasetRoot) archive.appendIncremental(validBidsI) assert not archive.isEmpty() assert archiveHasMetadata(archive, imageMetadata) assert appendDataMatches(archive, validBidsI) assert isValidBidsArchive(datasetRoot)
def testSequenceAppend(bidsArchive4D, validBidsI, imageMetadata): NUM_APPENDS = 2 BIDSI_LENGTH = 2 for i in range(NUM_APPENDS): incrementAcquisitionValues(validBidsI) bidsArchive4D.appendIncremental(validBidsI) image = bidsArchive4D.getImages( matchExact=False, **filterEntities(imageMetadata))[0].get_image() shape = image.header.get_data_shape() assert len(shape) == 4 and shape[3] == (BIDSI_LENGTH * (1 + NUM_APPENDS)) assert archiveHasMetadata(bidsArchive4D, imageMetadata) assert appendDataMatches(bidsArchive4D, validBidsI, startIndex=2, endIndex=4) assert isValidBidsArchive(bidsArchive4D.rootPath)
def testBidsArchiveMultipleRun(bidsArchiveMultipleRuns): assert isValidBidsArchive(bidsArchiveMultipleRuns.rootPath), \ "BIDS Archive Multiple Runs fixture is not a valid BIDS Archive " \ "(path: " + bidsArchiveMultipleRuns.rootPath + " )"
def testBidsArchive4D(bidsArchive4D): assert isValidBidsArchive(bidsArchive4D.rootPath), \ "BIDS Archive 4D fixture is not a valid BIDS Archive"