Overall post-scanner steps

After data collection, a significant amount of post-scanner steps remain to reach the point where all data and derivatives have been processed, making sure they are BIDS compliant and ready for release.

The flowchart below shows an overview of the post-scanner data workflow:

flowchart TB
    classDef imp stroke:#f00,stroke-width:2px;

    subgraph PACS[PACS]
    end

    subgraph physio["Physio-recording Laptop (███)"]
    end

    subgraph et_pc[Eye-tracker Computer]
    end

    subgraph psychopy_pc["Stimuli Presentation Laptop (███)"]
    end

    subgraph local_data[<b>Local Storage</b>]
        raw_mri[Raw MRI]
        bids_mri[BIDS MRI]
        bids_phys[BIDS Physio]
        bids_edf[BIDS edf]
        bids_events[BIDS Events]
    end

    subgraph dropbox[<b>Dropbox</b>]
        raw_phys[Raw Physio]
        raw_edf[Raw edf]
        raw_events[<i>Psychopy</i> Logs]
    end

    subgraph datalad[<b>DataLad</b>]
        bids_mri_datalad[BIDS MRI]
        bids_phys_datalad[BIDS Physio]
        bids_edf_datalad[BIDS edf]
        bids_events_datalad[BIDS Events]

        mriqc_out[Visual reports]
        preproc_fMRI[Preprocessed fMRI]
        preproc_dMRI[Preprocessed dMRI]

        FC

        dti_out[dMRI Derivatives]
        SC
    end

    subgraph openneuro[<b>Open Neuro Datasets</b>]
        unprocessed[Unprocessed Dataset]
        processed[Preprocessed Dataset]
        connectivity[SC, FC]

        rel_1[HCPh Release 1]
        rel_2[HCPh Release 2]
        rel_3[HCPh Release 3]
    end

    PACS --->|<i>pacsman</i> Script| raw_mri
    physio -->|Dropbox Sync| raw_phys
    et_pc -->|Psychopy| psychopy_pc
    psychopy_pc --> |Dropbox Sync| raw_edf
    psychopy_pc --> |Dropbox Sync| raw_events

    raw_mri -->|<i>HeudiConv</i> Script| bids_mri
    raw_phys --->|<i>physio-to-bids.ipynb</i> Script| bids_phys
    raw_edf ---> |<i>edf2bids</i> Script| bids_edf
    raw_events ---> |<i>psychopy2events.py</i> Script| bids_events

    bids_mri -->|FIRST Session Only !| med[Clinical Screening]
    med -->|"Incidental(s)"| alert[Alert Participant]
    class alert imp

    local_data --->|<i>datalad save</i>| datalad
    local_data --->|<i>cron</i> Job| HOrUs
    HOrUs ---> datalad
    bids_mri_datalad -->|MRIQC| mriqc_out[Visual Reports]

    mriqc_out -->|Q'Kay| mri_qc_screen[Screening]
    mri_qc_screen -->|Exclusion Criterium Met| Reschedule
    class Reschedule imp

    bids_mri_datalad -->|fMRIPrep| preproc_fMRI[Preprocessed fMRI]
    bids_mri_datalad -->|dMRIPrep| preproc_dMRI[Preprocessed dMRI]

    bids_mri_datalad -->|<i>pydeface</i> Script| unprocessed
    %%mriqc_out --> unprocessed

    preproc_dMRI --> processed
    preproc_fMRI --> processed

    %% fMRI pipeline
    %%preproc_fMRI --- mot_censor
    %%mot_censor --- regressed
    %%regressed --- filtered
    %%bids_phys_datalad --- filtered
    %%filtered --> FC
    preproc_fMRI --->|<i>compute_fc</i> Script| FC

    %% dMRI pipeline
    %%preproc_dMRI --- dti_dki
    %%dti_dki --> dti_out
    preproc_dMRI --->|DTI and DKI| dti_out

    dti_out --> processed

    %%preproc_dMRI --- dwi_odf
    %%dwi_odf --- tract
    %%tract --> SC
    preproc_dMRI --->|CSD and Tractography| SC

    SC --> connectivity
    FC --> connectivity

    unprocessed --> rel_1
    processed --> rel_2
    connectivity --> rel_3

The above graph can be detailed into two main data workflows:

  1. MRI data. Stored on the CHUV PACS, the raw MRI data should first be locally converted to BIDS. Then both the raw and BIDS compliant data are to be synchronized with the Datalad dataset. From there, the BIDS compliant data can be quality controlled and pre-processed using the corresponding packages (e.g. MRIQC, fMRIPrep, dMRIPrep) to allow computation of analysis-grade derivatives (e.g. functional or structural connectivity).
  2. Physiological data. Physiological data stored in the stimuli presentation laptop (███) and the physio-recording laptop (███) are synchronized with a cloud storage using Dropbox. The physiological signals (AcqKnowledge) and ET's recordings are converted to BIDS using phys2bids and etf2bids, respectively. The logs from Psychopy are converted into BIDS' events files with the psychopy2events.py script. Further processing steps, such as denoising, should be defined soon.