Stencila provides a set of open-source software components enabling reproducible research within the tool of your choice. Stencila allows you to write reproducible documents containing interactive source code using the interfaces you are most familiar with. Stencila components can be combined in various ways and plugged into existing reproducible infrastructure.
Stencila execution engine is its heart. The engine enables a spreadsheet-like, reactive programming model. It maintains a graph of the dependency between code cells. This means that as you change your code or data, all other parts of your document depending on them get updated as well. Stencila execution engine does not itself execute the code embedded in the documents but instead sends it to the execution contexts.
The execution contexts determine the inputs and outputs of cells which enables automatic conversion of data between languages. In other words, you can combine of multiple languages in one document.
Stencila comes with its own simple interface, Stencila Sheet, which can be used similarly to a typical spreadsheet application. We are working on plugins for dominant spreadsheet applications which will add capabilities for working with:
- code in open-source languages,
- shared, custom functions
- shared, custom types (for data validation).
In other words, Stencila Sheets (and in the future, the plugins) allow for execution of R, Python, SQL (and more languages) code via special “code-snippet” functions e.g.
sql. This feature will help researchers working in spreadsheet make their work more robust, easier to test and collaborate on.
Stencila includes a set of import/export converters which allow you to convert between a range of formats commonly used for among researchers (and not only). Converters support lossless conversion of interactive source code sections and (most of the time) formatting.
You can convert to and from formats used by:
- Excel (xlsx, csv, tsv),
- Jupyter Notebooks (ipynb),
- Markdown (md),
- RMarkdown (Rmd),
- Word (docx),
- LaTeX (tex),
- publishing applications (JATS, xml),
- and more...
Converter bridges formats commonly used across the workflow lifecycle, e.g.from Jupyter Notebook to RMarkdown to Word to JATS. It makes the collaboration more seamless and less painful.