aces / cbrain

CBRAIN is a flexible Ruby on Rails framework for accessing and processing of large data on high-performance computing infrastructures.
GNU General Public License v3.0
71 stars 43 forks source link

Document somewhere the special cbrain flag for Boutiques descriptors #1128

Open prioux opened 3 years ago

prioux commented 3 years ago

The CBRAIN Boutiques integrator supports a set of special flags in the "custom" field of the descriptor.

Document them all somewhere?

At the top of my head:

"custom": {
  "cbrain:author": "descriptor author",
  "cbrain:inherits-from-class": "ClassName",
  "cbrain:can-submit-new-tasks": truefalse,
  "cbrain:ignore-exit-status": truefalse,
  "cbrain:ignore_outputs": [id, id, id],
  "cbrain:save_back_inputs": [id, id, id],
  "cbrain:readonly-input-files": truefalse,
  "cbrain:alters-input-files": truefalse
}
MontrealSergiy commented 2 years ago

Also code bases (templates) contain cbrain:alters-input-files

I see also

Could go somewhere into developer's wiki, readme of cbrain-neuro-plugins or cbrain.ca. Also I believe @natacha-beck had a wiki on boutiques integration, not sure why it did not get into the main wiki.

Update, checked today

natacha-beck commented 2 years ago

@MontrealSergiy here is the page you are refering: https://github.com/natacha-beck/cbrain-wiki/wiki/Tasks-Integration-With-Boutiques

It was document about old Boutiques integration. We should at least have documentation about both way to integrate Boutiques (in cbrain_task_descriptors and in boutiques_descriptors).

MontrealSergiy commented 10 months ago

actually there is a designated CBRAIN Boutiques wiki section now, is it a good place for it? https://github.com/aces/cbrain/wiki/Tool-integration-with-Boutiques-or-Scientific-tool-integration-in-CBRAIN

MontrealSergiy commented 8 months ago

The current draft documentation is at https://docs.google.com/spreadsheets/d/1GdetgwsxfX9dXDXpqlwi_CU2_Shvn1u1L5yVcZU31g0

prioux commented 8 months ago

I want this documentation to be part of the codebase.

I am not sure which file is more appropriate, but given we have a library for loading and accessing Boutiques descriptor files, maybe we should put it there.

A larger comment block should enumerate them all in a table. Then we could have a nice new set of accessor methods for each of the special flags, something like

# Return the CBRAIN author of the descripto from the custom field
#    "custom": { "cbrain:author": "Name of person" }
def custom_cbrain_author
   self.custom['cbain:author']
end

This would also allow us to handle gracefully the inconsistencies we have in these custom sections (e.g. some descriptors have cbrain:author as a string, some as an array of strings).

prioux commented 8 months ago

Once the methods are all nicely created, we can modify the integration code to use these methods instead of trying to directly access the custom structure.