def testAppendBidsRun(tmpdir, bidsArchive4D, bidsArchiveMultipleRuns, sampleBidsEntities): archivePath = Path(tmpdir, "appendBidsRunArchive") archive = BidsArchive(archivePath) emptyRun = BidsRun() archive.appendBidsRun(emptyRun) run = bidsArchive4D.getBidsRun(**sampleBidsEntities) archive.appendBidsRun(run) assert archive.getBidsRun(**sampleBidsEntities) == run
def doRuns(cfg, bidsInterface, subjInterface, webInterface): """ Process a run of a bids dataset. The subject and run configuration values will be supplied by the cfg parameter. Args: cfg: configurations parsed from the project toml config file bidsInterface: client interface to bids data webInterface: client interface to user web page Returns: no return value """ subject = cfg.subjectName run = cfg.runNum[0] entities = { 'subject': subject, 'run': run, 'suffix': 'bold', 'datatype': 'func' } webInterface.clearRunPlot(run) if cfg.writeBidsArchive is True: # Create a new bids archive from the incrementals bidsArchivePath = os.path.join(tmpDir, 'bids_archive_' + uuid.uuid4().hex) print(f'BIDS Archive will be written to {bidsArchivePath}') newArchive = BidsArchive(bidsArchivePath) newRun = BidsRun(**entities) # Initialize the bids stream streamId = bidsInterface.initOpenNeuroStream(cfg.dsAccessionNumber, **entities) numVols = bidsInterface.getNumVolumes(streamId) for idx in range(numVols): bidsIncremental = bidsInterface.getIncremental(streamId, idx) if cfg.writeBidsArchive is True: newRun.appendIncremental(bidsIncremental) imageData = bidsIncremental.getImageData() avg_niftiData = numpy.mean(imageData) print("| average activation value for TR %d is %f" % (idx, avg_niftiData)) webInterface.plotDataPoint(run, idx, float(avg_niftiData)) if cfg.writeBidsArchive is True: newArchive.appendBidsRun(newRun)