-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Doubt about GUI from the plugin perspective. #77
Comments
Hi Yorguin, Yes, in the last couple of months I put quite a bit of work in making the bidseditor (the GUI) independent of DICOM / dcm2niix (I put all that in a plugin of my own). The bidseditor is expecting a certain structure in the bidsmap.yaml file (which is the heuristics file that it is editing), but that's all, you can just add a EEG/MEG section (with the same structure) and the bidseditor will understand it out of the box. Plugins are not connected to the bidseditor (except for some plugins settings that you can put there), but a plugin is used by the bidsmapper (to scan the data) and by the bidscoiner (to convert the data to BIDS). I am planning to do a hackathon session in the upcoming BrainHack to integrate bidscoin with phys2bids (from physiopy), i.e. write a phys2bids plugin for bidscoin. |
Maybe, if you are interested, we can do a second hackathon session, to write a sovabids plugin for bidscoin as well :-) p.s. it is one way to think of sovabids as a bidscoin plugin, you can also put the other way around and way think of bidscoin as a front-end for sovabids. It's the same thing, but it sounds differently :-) |
Here's a post about it from the brainhack physiopy-channel (that's on MatterMost), in which you can see how I added a stub phys2bids section to the bidsmap.yaml file and how that looked in the bidseditor (i.e. without their being a phys2bids plugin yet):
Physio:
# --------------------------------------------------------------------------------
# Physio key-value heuristics (phys2bids -info data) that are mapped to the BIDS labels)
# --------------------------------------------------------------------------------
subject: <<SourceFilePath>> # <<SourceFilePath>> extracts the subject label from the source directory during bidscoiner runtime
session: <<SourceFilePath>> # <<SourceFilePath>> extracts the session label from the source directory during bidscoiner runtime
beh: # ----------------------- All behavioural runs --------------------
- provenance: # The fullpath name of the source file from which the attributes are read. Serves also as a look-up key to find a run in the bidsmap
filesystem: # This is what you are using now (well, part of it)
path: # File folder, e.g. ".*Parkinson.*" or ".*(phantom|bottle).*"
name: # File name, e.g. ".*fmap.*" or ".*(fmap|field.?map|B0.?map).*"
size: # File size, e.g. "2[4-6]\d MB" for matching files between 240-269 MB
nrfiles: # Number of files in the folder that match the above criteria, e.g. "5/d/d" for matching a number between 500-599
attributes: # The matching (regexp) criteria for the phys2bids -info data go in here
Trigger:
CO2:
O2:
Pulse:
bids:
task:
acq:
recording:
run: <<1>> # This will be updated during bidscoiner runtime (as it depends on the already existing files)
suffix: physio
meta: # This is an optional entry for meta-data dictionary that will be appended to the json sidecar files produced by dcm2niix
SamplingFrequency:
StartTime:
Trigger: <<Trigger>>
Columns:
- provenance: # The fullpath name of the source file from which the attributes are read. Serves also as a look-up key to find a run in the bidsmap
filesystem: # This is what you are using now (well, part of it)
path: # File folder, e.g. ".*Parkinson.*" or ".*(phantom|bottle).*"
name: # File name, e.g. ".*eye.*" or ".*(iEEG|MEG).*"
size: # File size, e.g. "2[4-6]\d MB" for matching files between 240-269 MB
nrfiles: # Number of files in the folder that match the above criteria, e.g. "5/d/d" for matching a number between 500-599
attributes: # The matching (regexp) criteria for the phys2bids -info data go in here
Trigger:
CO2:
O2:
Pulse:
bids:
task:
acq:
recording:
run: <<1>> # This will be updated during bidscoiner runtime (as it depends on the already existing files)
suffix: stim
meta: # This is an optional entry for meta-data dictionary that will be appended to the json sidecar files produced by phys2bids
SamplingFrequency:
StartTime:
Trigger: <<Trigger>>
Columns: |
Man that yaml-way of abstracting the GUI is amazing. I'm really impressed. So, it seems that after all such integration should be possible in the future. Many thanks for your time to provide the example.
That would be awesome. Sadly I'm not sure we will have our backend ready for June 16 )the hackaton). But in case we have that would be a really good idea. In any case, once the backend is ready I think it would be worthwhile trying to set up bidscoin as a front-end. I will close this for now since my doubt is pretty much resolved. Again, many thanks! |
@marcelzwiers Hi Marcel, just wanted to let you know I ended up registering at the OHBM Brainhack. The idea is to contribute to bidscoin to learn more about it and if all goes well maybe working on sovabids. |
Nice, so you would join the phys2bids <> bidscoin hackathon or do you want your own sovabids hackathon? |
@marcelzwiers I would join the phys2bids hackathon, I would be a bit overwhelmed to propose my own hackaton hehe |
You can already design the SOVABIDS plugin, the interface at least, without the back-end being ready. You can do so in the phys2bidscoin hackathon |
yeah, lets see how that goes! |
Hi @marcelzwiers , I dont know if you remember me. I'm the GSOC student from neurostars
Again, sorry for the late reply. I didn't have the general notifications activated so I only got notified if I was mentioned.
I'm evaluating the possibility of SOVABIDS (the project which is the MEG/EEG bids conversion backend) to have an API that plugs into BIDSCOIN PLUGIN API . I think it may be possible (details at yjmantilla/sovabids#1 (comment) )
Lets say I make an API that is compatible with your API and the plugin would be a wrapper around SOVABIDS backend. Given this:
The text was updated successfully, but these errors were encountered: