Metadata-Version: 2.1
Name: scinode
Version: 0.3.7
Summary: Design computational workflow using nodes.
Home-page: https://github.com/scinode/scinode
Author: Xing Wang
Author-email: xingwang1991@gmail.com
License: MIT License
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: psutil
Requires-Dist: numpy
Requires-Dist: scipy
Requires-Dist: click
Requires-Dist: dnspython
Requires-Dist: pymongo
Requires-Dist: mongoengine
Requires-Dist: pandas
Requires-Dist: pyyaml
Requires-Dist: colorama
Requires-Dist: termcolor
Requires-Dist: ipython
Requires-Dist: blinker
Requires-Dist: flask
Requires-Dist: gunicorn
Requires-Dist: cloudpickle
Requires-Dist: disk-objectstore
Requires-Dist: paramiko
Requires-Dist: celery
Provides-Extra: celery
Requires-Dist: celery ; extra == 'celery'
Requires-Dist: gevent ; extra == 'celery'

# SciNode

[![Unit test](https://github.com/scinode/scinode/actions/workflows/scinode_test.yaml/badge.svg)](https://github.com/scinode/scinode/actions/workflows/scinode_test.yaml)

A platform for designing node-based workflows for science and engineering.


**Features**

- easy to design computational workflow and reusable components.
- execute the workflow on the local or remote computer.
- easy to control the nodetree: reset, pause, play and cancel nodes.
- suitable for both programmers and non-programmers.
- easy to share ready-to-use components and workflow templates.
- support high throughput calculation.



**Different from other node-base workflows**

- Nodetree data is stored in the database. A nodetree can be fully reconstructed from the database.
- For long-running jobs, thus the execution does not provide instant feedback.

## Demo site
Try it here: https://scinode-app.herokuapp.com/

## Installation

```console
    pip install --upgrade --user scinode
```


## Documentation
Check the [docs](https://scinode.readthedocs.io/en/latest/) and learn about the features.

## Examples
**A simple math calculation**

```python
from scinode.nodetree import NodeTree
nt = NodeTree(name="example")
float1 = nt.nodes.new("Float", value=2.0)
float2 = nt.nodes.new("Float", value=3.0)
add1 = nt.nodes.new("Operator", operator="+")
nt.links.new(float1.outputs[0], add1.inputs[0])
nt.links.new(float2.outputs[0], add1.inputs[1])
nt.launch()
```

## License
[MIT](http://opensource.org/licenses/MIT)
