Philosophy

Software is best written in layers. Each layer should encapsulate knowledge about how to best use the next lower layer. Its functionality should be exposed through as simple an API as possible.

Seam extends this rationale to neuroimaging data analysis. It is up to you to organize your data and run analyses, but seam will generate commands for you to apply your data against standard neuroimaging tools.

Simply put, it builds commands around common neuroimaging tools. You’re free to do with these commands whatever you wish.

Importantly, seam is oblivious to these two otherwise-important factors:

  • Data organization
  • Command execution

Seam has no dependencies and requires minimal effort to use it. Seam can easily integrate into any application ranging from a single script to something much more complicated.

Recipes vs Functions

Where possible, functionality provided by seam is organized in two layers:

  • Functions: low-level, highly configurable functions to produce commands or scripts.
  • Recipes: high-level, less configurable functions to produce complete workflows around a tool.

Recipes will be exposed as both binaries that can be executed in a shell and as importable functions in python code. Users should first try to use recipes to accomplish their goals as these expose best practices around the tool.

If more customization is needed, the low-level functions are also available. Understandably, more effort is required to piece together the low-level functions into a meaningful processing stream.

Backwards Compatiblity

Seam makes every effort to ensure backward compatibility for the commands it generates. Because neuroimaging projects can last for very long periods, the commands generated by seam will be versioned so you can upgrade seam and still produce the same commands for a given project. Newer projects, though, can use newer versions of commands using the same seam.