Metadata-Version: 2.4
Name: bioflow-insight
Version: 2.0.12
Summary: A software to extract and analyze the structure and associated metadata from a Nextflow workflow.
Author: George Marchment
Project-URL: Homepage, https://gitlab.liris.cnrs.fr/sharefair/bioflow-insight
Project-URL: Issues, https://gitlab.liris.cnrs.fr/sharefair/bioflow-insight/-/issues
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: graphviz==0.20.1
Requires-Dist: networkx~=3.2.1; python_version >= "3.9"
Requires-Dist: networkx~=3.1; python_version == "3.8"
Requires-Dist: numpy~=1.26.1; python_version >= "3.9"
Requires-Dist: numpy~=1.24.4; python_version == "3.8"
Requires-Dist: sympy==1.9
Requires-Dist: parsimonious==0.10.0
Requires-Dist: click
Requires-Dist: jpype1==1.6.0
Requires-Dist: graphtheory==1.0.4
Provides-Extra: dev
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"
Requires-Dist: coverage; extra == "dev"
Requires-Dist: black~=23.12.0; extra == "dev"
Dynamic: license-file

# BioFlow-Insight


[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-green.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Version 2.0.9](https://img.shields.io/badge/version-v2.0.9-yellow)]()



## Description

**BioFlow-Insight** is a Python-based open-source command-line tool designed to automatically analyse Nextflow workflow code, gathering useful information, particularly in the form of visual graphs that illustrate the workflow's structure and its various steps. Additionally, it is capable of detecting certain programming errors and generates a RO-Crate JSON-LD file that describes the workflow. It also generates a json describing the workflow's srtucture in a simplified metro-map form which can be visualised with MetroFlow. 

**BioFlow-Insight** is easily installable as a CLI (see [here](https://pypi.org/project/bioflow-insight/)). It is also freely accessible as a free [web service](https://bioflow-insight.pasteur.cloud/). For more information and to start using BioFlow-Insight, visit [here](https://bioflow-insight.pasteur.cloud/) (https://bioflow-insight.pasteur.cloud/).


## Table of Contents

- [BioFlow-Insight](#bioflow-insight)
  - [Description](#description)
  - [Table of Contents](#table-of-contents)
  - [Installation](#installation)
    - [Installing via pip](#installing-via-pip)
    - [Using from source](#using-from-source)
  - [Usage](#usage)
    - [Using BioFlow-Insight directly through the source](#using-bioflow-insight-directly-through-the-source)
  - [Citing BioFlow-Insight](#citing-bioflow-insight)
  - [License](#license)
  - [Funding](#funding)

## Installation

### Installing via pip

**BioFlow-Insight** is easily installable as a CLI.

To install it using *pip*, use the following command :

```
pip install bioflow-insight
```


### Using from source

To access its source code, simply clone its GitLab repository. **BioFlow-Insight** is developed using Python 3

**BioFlow-Insight**'s dependencies are given in the `requirements.txt` file.

> Note : To install graphviz, in linux you might need to execute this command `sudo apt install graphviz`


## Usage

**BioFlow-Insight** is a Python-based open-source command-line tool designed to automatically analyse Nextflow workflow code, gathering useful information, particularly in the form of visual graphs that illustrate the workflow's structure and its various steps. Additionally, it is capable of detecting certain programming errors and generates a RO-Crate JSON-LD file that describes the workflow. It also generates a json describing the workflow's srtucture in a simplified metro-map form which can be visualised with MetroFlow. 


For an explanation of the different elements composing a Nextflow workflow, see [its documentation](https://www.nextflow.io/docs/latest/index.html).

The graphs generated by **BioFlow-Insight** are : 

* *Specification graph:* **BioFlow-Insight** reconstructs the workflow’s specification graph from its source code without having to execute it. The specification graph is defined as a directed graph where nodes are processes and operations, and edges are channels that are directed from one vertex to another (steps of the workflow are ordered). This graph **represents all the possible interactions between processes and operations through channels** that are defined in the workflow code. Within the specification graph, we define two types of operations: operations are categorised in two groups: the *following operations* defined as operations that have at least one input, and the *starting operations* defined as operations without any inputs.
  
* *Process dependency graph:* **BioFlow-Insight** generates the process dependency graph which represents only **processes (nodes) and their dependencies (edges)**. Similar to the dependency graph, this graph is constructed by removing all operations, leaving only processes, and linking them based on their dependencies in the original specification graph. Again in this representation, **the edges no longer represent interaction between its elements, but their dependencies**.

* *Metro-Map Json file:* **BioFlow-Insight** also generates the metro-map json file, which describes the workflow in metro-map form (with process code, conditions represented by colour, etc..). **This needs to be updated**


To run BioFlow-Insight to obtain all the outputs, run this command:

```
bioflow-insight --analysis bioflow my_workflow/main.nf
```

If you want to simply obtain the json file which describes the Metro-Map, run this command:

```
bioflow-insight --analysis metroflow my_workflow/main.nf
```

> For a more in-depth explanation of BioFlow-Insight functionnalities, visit its webpage [here](https://bioflow-insight.pasteur.cloud/specification/) (https://bioflow-insight.pasteur.cloud/specification/).

### Using BioFlow-Insight directly through the source

You can also use BioFlow-Insight directly through the source code without having to install the command line but using a python environment.
Here is an example to so (after cloning the repo):

```python
#Importing the Workflow class
import os
current_path= os.getcwd()
os.chdir("bioflow-insight/")
from src.workflow import Workflow
os.chdir(current_path)

#Initialising the workflow
w = Workflow("../MyWorkflow/")
w.initialise_with_bioflow()
w.generate_specification_graph(render_graphs=False)
w.generate_process_dependency_graph(render_graphs=True)
#Get the processes called
processes_called = w.get_processes_called()
#Generate RO-Crate and Prov-Crate 
w.get_rocrate()
w.get_prov_rocrate()
```


## Citing BioFlow-Insight

**Please cite BioFlow-Insight in any research that uses or extends BioFlow-Insight.**

To cite **BioFlow-Insight**, please use the following publication:

> George Marchment, Bryan Brancotte, Marie Schmit, Frédéric Lemoine, Sarah Cohen-Boulakia, BioFlow-Insight: facilitating reuse of Nextflow workflows with structure reconstruction and visualization, *NAR Genomics and Bioinformatics*, Volume 6, Issue 3, September 2024, lqae092, [https://doi.org/10.1093/nargab/lqae092](https://doi.org/10.1093/nargab/lqae092)


## License

This project is licensed under the [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.en.html).


## Funding

This work received support from the National Research Agency under the France 2030 program, with reference to ANR-22-PESN-0007.

___
<br>

<img align="left" src="https://gitlab.liris.cnrs.fr/sharefair/bioflow-insight/-/raw/main/img/logo.png" width="16%">
<img align="left" src="https://gitlab.liris.cnrs.fr/sharefair/bioflow-insight/-/raw/main/img/paris_saclay.png" width="16%">
<img align="left" src="https://gitlab.liris.cnrs.fr/sharefair/bioflow-insight/-/raw/main/img/lisn.png" width="16%">
<img align="left" src="https://gitlab.liris.cnrs.fr/sharefair/bioflow-insight/-/raw/main/img/pasteur.png" width="16%">
<img align="left" src="https://gitlab.liris.cnrs.fr/sharefair/bioflow-insight/-/raw/main/img/sharefair.png" width="16%">
<img align="left" src="https://gitlab.liris.cnrs.fr/sharefair/bioflow-insight/-/raw/main/img/france2030.png" width="16%">

<br/><br/>
<br/><br/>

