# HG changeset patch
# User francesco_lapi
# Date 1761506861 0
# Node ID fcdbc81feb4595bcbc8b9f8c26354a40a9705b93
# Parent fa93040a75afdfba532ee90c450500411018424f
Uploaded
diff -r fa93040a75af -r fcdbc81feb45 COBRAxy/.gitignore
--- a/COBRAxy/.gitignore Sat Oct 25 15:20:55 2025 +0000
+++ b/COBRAxy/.gitignore Sun Oct 26 19:27:41 2025 +0000
@@ -4,4 +4,5 @@
.vscode/
outputs/
build/
-dist/
\ No newline at end of file
+dist/
+*/.pytest_cache/
\ No newline at end of file
diff -r fa93040a75af -r fcdbc81feb45 COBRAxy/README.md
--- a/COBRAxy/README.md Sat Oct 25 15:20:55 2025 +0000
+++ b/COBRAxy/README.md Sun Oct 26 19:27:41 2025 +0000
@@ -4,12 +4,12 @@
# COBRAxy
-A Python toolkit for metabolic flux analysis and visualization, with Galaxy integration.
+A Python-based command-line suite for metabolic flux analysis and visualization, with [Galaxy](http://marea4galaxy.cloud.ba.infn.it/galaxy) integration.
COBRAxy transforms gene expression and metabolite data into meaningful metabolic insights through flux sampling and interactive pathway maps.
DOC: https://compbtbs.github.io/COBRAxy
## Features
-
+- **Import/Export** of metabolic models in multiple formats (SBML, JSON, MAT, YAML)
- **Reaction Activity Scores (RAS)** from gene expression data
- **Reaction Propensity Scores (RPS)** from metabolite abundance
- **Flux sampling** with CBS or OptGP algorithms
@@ -18,13 +18,41 @@
- **Galaxy tools** for web-based analysis
- **Built-in models** including ENGRO2 and Recon
-## Quick Start
+## Requirements
+
+- **Python**: 3.8-3.13
+- **OS**: Linux, macOS, Windows (Linux/macOS recommended)
+- **Dependencies**: Automatically installed via pip (COBRApy, pandas, numpy, etc.)
+- **Build tools**: C/C++ compiler (gcc, clang, or MSVC), CMake for compiling Python extensions, pkg-config
+
+**System dependencies** (install before pip):
+```bash
+# Ubuntu/Debian
+sudo apt-get install build-essential cmake pkg-config libvips libglpk40 glpk-utils
+
+# macOS
+xcode-select --install
+brew install cmake pkg-config vips glpk
+
+# Windows (with Chocolatey)
+choco install cmake visualstudio2022buildtools pkgconfiglite
+```
### Installation
+**Recommended: Using Conda**
+
```bash
+# Create a new conda environment
+conda create -n cobraxy python=3.13 -y
+conda activate cobraxy
+
+# Install system dependencies via conda (optional, if not using system packages)
+conda install -c conda-forge gcc cmake pkg-config swiglpk -y
+
+# Clone and install COBRAxy
git clone https://github.com/CompBtBs/COBRAxy.git
-cd COBRAxy
+cd COBRAxy/src
pip install .
```
@@ -54,29 +82,16 @@
| Tool | Purpose | Input | Output |
|------|---------|--------|---------|
-| `metabolic_model_setting` | Extract model components | SBML model | Rules, reactions, bounds, medium |
-| `ras_generator` | Compute reaction activity scores | Gene expression data | RAS values |
-| `rps_generator` | Compute reaction propensity scores | Metabolite abundance | RPS values |
-| `marea` | Statistical pathway analysis | RAS + RPS data | Enrichment + base maps |
-| `ras_to_bounds` | Apply RAS constraints to model | RAS + SBML model | Constrained bounds |
-| `flux_simulation` | Sample metabolic fluxes | Constrained model | Flux distributions |
-| `flux_to_map` | Add fluxes to enriched maps | Flux samples + base maps | Final styled maps |
-| `marea_cluster` | Cluster analysis | Expression/flux data | Sample clusters |
-
-## Requirements
+| [`importMetabolicModel`](https://compbtbs.github.io/COBRAxy/#/tools/import-metabolic-model) | Import and extract model components | SBML/JSON/MAT/YAML model | Tabular model data |
+| [`exportMetabolicModel`](https://compbtbs.github.io/COBRAxy/#/tools/export-metabolic-model) | Export tabular data to model format | Tabular model data | SBML/JSON/MAT/YAML model |
+| [`ras_generator`](https://compbtbs.github.io/COBRAxy/#/tools/ras-generator) | Compute reaction activity scores | Gene expression data | RAS values |
+| [`rps_generator`](https://compbtbs.github.io/COBRAxy/#/tools/rps-generator) | Compute reaction propensity scores | Metabolite abundance | RPS values |
+| [`marea`](https://compbtbs.github.io/COBRAxy/#/tools/marea) | Statistical pathway analysis | RAS + RPS data | Enrichment + base maps |
+| [`ras_to_bounds`](https://compbtbs.github.io/COBRAxy/#/tools/ras-to-bounds) | Apply RAS constraints to model | RAS + SBML model | Constrained bounds |
+| [`flux_simulation`](https://compbtbs.github.io/COBRAxy/#/tools/flux-simulation) | Sample metabolic fluxes | Constrained model | Flux distributions |
+| [`flux_to_map`](https://compbtbs.github.io/COBRAxy/#/tools/flux-to-map) | Add fluxes to enriched maps | Flux samples + base maps | Final styled maps |
+| [`marea_cluster`](https://compbtbs.github.io/COBRAxy/#/tools/marea-cluster) | Cluster analysis | Expression/flux data | Sample clusters |
-- **Python**: 3.8-3.12
-- **OS**: Linux, macOS, Windows (Linux recommended)
-- **Dependencies**: Automatically installed via pip (COBRApy, pandas, numpy, etc.)
-
-**Optional system libraries** (for enhanced features):
-```bash
-# Ubuntu/Debian
-sudo apt-get install libvips libglpk40 glpk-utils
-
-# For Python GLPK bindings
-pip install swiglpk
-```
## Data Flow
@@ -112,10 +127,10 @@
- **Models**: ENGRO2, Recon (human metabolism)
- **Gene mappings**: HGNC, Ensembl, Entrez ID conversions
-- **Pathway maps**: Pre-styled SVG templates
+- **Pathway map**: Pre-styled SVG templates for ENGRO2
- **Medium compositions**: Standard growth conditions
-Located in `local/` directory for immediate use.
+Located in `src/local/` directory for immediate use.
## Command Line Usage
@@ -147,141 +162,8 @@
- Upload data through Galaxy interface
- Chain tools in visual workflows
- Share and reproduce analyses
-- Access via Galaxy ToolShed
-## Tutorials
-
-### Local Galaxy Installation
-
-To set up a local Galaxy instance with COBRAxy tools:
-
-1. **Install Galaxy**:
- ```bash
- # Clone Galaxy repository
- git clone -b release_23.1 https://github.com/galaxyproject/galaxy.git
- cd galaxy
-
- # Install dependencies and start Galaxy
- sh run.sh
- ```
-
-2. **Install COBRAxy tools**:
- ```bash
- # Add COBRAxy tools to Galaxy
- mkdir -p tools/cobraxy
- cp path/to/COBRAxy/Galaxy_tools/*.xml tools/cobraxy/
-
- # Update tool_conf.xml to include COBRAxy tools
- # Add section in config/tool_conf.xml:
- #
- ```
-
-3. **Galaxy Tutorial Resources**:
- - [Galaxy Installation Guide](https://docs.galaxyproject.org/en/master/admin/)
- - [Tool Development Tutorial](https://training.galaxyproject.org/training-material/topics/dev/)
- - [Galaxy Admin Training](https://training.galaxyproject.org/training-material/topics/admin/)
-
-### Python Direct Usage
-
-For programmatic use of COBRAxy tools in Python scripts:
-
-1. **Installation for Development**:
- ```bash
- # Clone and install in development mode
- git clone https://github.com/CompBtBs/COBRAxy.git
- cd COBRAxy
- pip install -e .
- ```
-
-2. **Python API Usage**:
- ```python
- import sys
- import os
-
- # Add COBRAxy to Python path
- sys.path.append('/path/to/COBRAxy')
-
- # Import tool modules
- import ras_generator
- import rps_generator
- import flux_simulation
- import marea
- import ras_to_bounds
-
- # Set working directory
- tool_dir = "/path/to/COBRAxy"
- os.chdir(tool_dir)
-
- # Generate RAS scores
- ras_args = [
- '-td', tool_dir,
- '-in', 'data/expression.tsv',
- '-ra', 'output/ras_values.tsv',
- '-rs', 'ENGRO2'
- ]
- ras_generator.main(ras_args)
-
- # Generate RPS scores (optional)
- rps_args = [
- '-td', tool_dir,
- '-id', 'data/metabolites.tsv',
- '-rp', 'output/rps_values.tsv'
- ]
- rps_generator.main(rps_args)
-
- # Create enriched pathway maps
- marea_args = [
- '-td', tool_dir,
- '-using_RAS', 'true',
- '-input_data', 'output/ras_values.tsv',
- '-choice_map', 'ENGRO2',
- '-gs', 'true',
- '-idop', 'maps'
- ]
- marea.main(marea_args)
-
- # Apply RAS constraints to model
- bounds_args = [
- '-td', tool_dir,
- '-ms', 'ENGRO2',
- '-ir', 'output/ras_values.tsv',
- '-rs', 'true',
- '-idop', 'bounds'
- ]
- ras_to_bounds.main(bounds_args)
-
- # Sample metabolic fluxes
- flux_args = [
- '-td', tool_dir,
- '-ms', 'ENGRO2',
- '-in', 'bounds/bounds_output.tsv',
- '-a', 'CBS',
- '-ns', '1000',
- '-idop', 'flux_results'
- ]
- flux_simulation.main(flux_args)
- ```
-
-3. **Python Tutorial Resources**:
- - [COBRApy Documentation](https://cobrapy.readthedocs.io/)
- - [Metabolic Modeling with Python](https://opencobra.github.io/cobrapy/building_model.html)
- - [Flux Sampling Tutorial](https://cobrapy.readthedocs.io/en/stable/sampling.html)
- - [Jupyter Notebooks Examples](examples/) (included in repository)
-
-## Input/Output Formats
-
-| Data Type | Format | Description |
-|-----------|---------|-------------|
-| Gene expression | TSV | Genes (rows) × Samples (columns) |
-| Metabolites | TSV | Metabolites (rows) × Samples (columns) |
-| Models | SBML | Standard metabolic model format |
-| Results | TSV/CSV | Tabular flux/score data |
-| Maps | SVG/PDF | Styled pathway visualizations |
+For Galaxy installation and setup, refer to the [official Galaxy documentation](https://docs.galaxyproject.org/).
## Troubleshooting
diff -r fa93040a75af -r fcdbc81feb45 COBRAxy/dist/cobraxy/meta.yaml
--- a/COBRAxy/dist/cobraxy/meta.yaml Sat Oct 25 15:20:55 2025 +0000
+++ b/COBRAxy/dist/cobraxy/meta.yaml Sun Oct 26 19:27:41 2025 +0000
@@ -11,69 +11,82 @@
build:
entry_points:
- - custom_data_generator=custom_data_generator:main
+ - importMetabolicModel=importMetabolicModel:main
+ - exportMetabolicModel=exportMetabolicModel:main
+ - ras_generator=ras_generator:main
+ - rps_generator=rps_generator:main
+ - marea_cluster=marea_cluster:main
+ - marea=marea:main
+ - ras_to_bounds=ras_to_bounds:main
- flux_simulation=flux_simulation:main
- flux_to_map=flux_to_map:main
- - marea_cluster=marea_cluster:main
- - marea=marea:main
- - ras_generator=ras_generator:main
- - ras_to_bounds=ras_to_bounds:main
- - rps_generator=rps_generator:main
noarch: python
script: {{ PYTHON }} -m pip install . -vv --no-build-isolation
number: 0
requirements:
host:
- - python >=3.8.20,<3.12
+ - python >=3.8,<3.14
- pip
- setuptools
+ - cmake
+ - pkg-config
run:
- - python >=3.8.20,<3.12
- - cairosvg ==2.7.1
- - cobra ==0.29.0
- - joblib ==1.4.2
- - lxml ==5.2.2
- - matplotlib-base ==3.7.3
- - numpy ==1.24.4
- - pandas ==2.0.3
- - pyvips ==2.2.3 # [linux or osx]
- - scikit-learn ==1.3.2
- - scipy ==1.10.1
- - seaborn ==0.13.0
- - svglib ==1.5.1
- pip:
- - pyvips==2.2.3 # [win]
+ - python >=3.8,<3.14
+ - cairosvg >=2.7.0
+ - cobra >=0.29.0
+ - joblib >=1.3.0
+ - lxml >=5.0.0
+ - matplotlib-base >=3.7.0
+ - numpy >=1.24.0
+ - pandas >=2.0.0
+ - pyvips >=2.2.0
+ - scikit-learn >=1.3.0
+ - scipy >=1.11.0
+ - seaborn >=0.13.0
+ - svglib >=1.5.0
+ - anndata >=0.8.0
+ - pydeseq2 >=0.4.0
+ - cmake
+ - pkg-config
test:
imports:
- utils
- - custom_data_generator
- - flux_simulation
- - marea_cluster
+ - importMetabolicModel
+ - exportMetabolicModel
- ras_generator
- - ras_to_bounds
- rps_generator
+ - marea_cluster
+ - marea
+ - ras_to_bounds
+ - flux_simulation
+ - flux_to_map
commands:
- - pip install pyvips==2.2.3
- - python -c "import pyvips; print('pyvips version:', pyvips.__version__)"
- pip check
- - custom_data_generator --help
+ - importMetabolicModel --help
+ - exportMetabolicModel --help
+ - ras_generator --help
+ - rps_generator --help
+ - marea_cluster --help
+ - marea --help
+ - ras_to_bounds --help
- flux_simulation --help
- flux_to_map --help
- - marea_cluster --help
- - marea --help
- - ras_generator --help
- - ras_to_bounds --help
- - rps_generator --help
requires:
- pip
about:
- home: https://github.com/CompBtBs/COBRAxy.git
- summary: A collection of tools for metabolic flux analysis in Galaxy.
- #license: ''
- #license_file: PLEASE_ADD_LICENSE_FILE
+ home: https://github.com/CompBtBs/COBRAxy
+ summary: A Python-based command-line suite for metabolic flux analysis and visualization
+ description: |
+ COBRAxy transforms gene expression and metabolite data into meaningful metabolic insights
+ through flux sampling and interactive pathway maps. It provides tools for computing reaction
+ activity scores (RAS), reaction propensity scores (RPS), flux sampling, and statistical analysis.
+ doc_url: https://compbtbs.github.io/COBRAxy
+ dev_url: https://github.com/CompBtBs/COBRAxy
+ license: MIT
+ license_file: LICENSE
extra:
recipe-maintainers:
diff -r fa93040a75af -r fcdbc81feb45 COBRAxy/docs/README.md
--- a/COBRAxy/docs/README.md Sat Oct 25 15:20:55 2025 +0000
+++ b/COBRAxy/docs/README.md Sun Oct 26 19:27:41 2025 +0000
@@ -1,8 +1,8 @@
# COBRAxy Documentation
-> A Python toolkit for metabolic flux analysis and visualization, with Galaxy integration.
+> A Python-based command-line suite for metabolic flux analysis and visualization, with Galaxy integration.
-COBRAxy enables the integration of transcriptomics data with COBRA-based metabolic models, offering a comprehensive framework for studying metabolism in both health and disease. With COBRAxy, users can load and enrich metabolic models by incorporating transcriptomic data and adjusting the model’s medium conditions.
+COBRAxy enables the integration of transcriptomics data with COBRA-based metabolic models, offering a comprehensive framework for studying metabolism in both health and disease. With COBRAxy, users can load and enrich metabolic models by incorporating transcriptomic data and adjusting the model's medium conditions.
## Overview
@@ -30,35 +30,28 @@
Install COBRAxy and get it running on your system
### [Tutorials](tutorials/)
-Step-by-step guides for Galaxy and Python usage
+Step-by-step guides for Galaxy usage
### [Tools Documentation](tools/)
Complete reference for all COBRAxy tools
## Data Flow
-COBRAxy follows several analysis paths:
+COBRAxy supports three main analysis workflows:
+
+1. **RAS-based Enrichment Analysis**:
+ Gene Expression → RAS Generation → MAREA → Enriched Pathway Maps
-1. **RAS Enrichment Analysis**: RAS computation → MAREA → Enriched Maps
-2. **Flux Enrichment Analysis Simulation**: RAS computation → Model Constraints → Flux Sampling → Flux Maps
-3. **RAS/RPS Enrichment Analysis**: RAS + RPS computation → MAREA → Enriched Maps
+2. **Flux Sampling Analysis**:
+ Gene Expression → RAS Generation → RAS to Bounds → Flux Simulation → Flux to Map → Flux-enriched Maps
+
+3. **RAS+RPS Combined Enrichment**:
+ Gene Expression + Metabolite Data → RAS + RPS Generation → MAREA → Multi-omics Enriched Maps
## Community & Support
-- **Documentation**: Complete guides and API reference
-- **Discussions**: Ask questions and share experiences
-- **Issues**: Report bugs and request features
+- **Documentation**: Complete guides and references
+- **Issues**: Report bugs and request features on [GitHub](https://github.com/CompBtBs/COBRAxy/issues)
- **Contributing**: Help improve COBRAxy
-## Quick Links
-
-| Resource | Description |
-|----------|-------------|
-| [Installation Guide](installation.md) | Get COBRAxy running on your system |
-| [Galaxy Tutorial](tutorials/galaxy-setup.md) | Web-based analysis setup |
-| [Python Tutorial](tutorials/python-api.md) | Use COBRAxy programmatically |
-| [Tools Documentation](tools/) | Complete tool reference |
-
----
-
**Ready to start?** Follow the [Installation Guide](installation.md) to get COBRAxy up and running!
\ No newline at end of file
diff -r fa93040a75af -r fcdbc81feb45 COBRAxy/docs/_sidebar.md
--- a/COBRAxy/docs/_sidebar.md Sat Oct 25 15:20:55 2025 +0000
+++ b/COBRAxy/docs/_sidebar.md Sun Oct 26 19:27:41 2025 +0000
@@ -2,19 +2,18 @@
* [Home](/)
-* [Installation](installation.md)
+* [Installation](/installation.md)
-* [Tutorials](tutorials/)
- * [Galaxy Setup](tutorials/galaxy-setup.md)
- * [Python API](tutorials/python-api.md)
+* [Tutorials](/tutorials/)
+ * [Galaxy Setup](/tutorials/galaxy-setup.md)
-* [Tools Documentation](tools/)
- * [RAS Generator](tools/ras-generator.md)
- * [RPS Generator](tools/rps-generator.md)
- * [MAREA](tools/marea.md)
- * [RAS to Bounds](tools/ras-to-bounds.md)
- * [Flux Simulation](tools/flux-simulation.md)
- * [Flux to Map](tools/flux-to-map.md)
- * [Model Setting](tools/metabolic-model-setting.md)
- * [Tabular to Model](tools/tabular-to-model.md)
- * [MAREA Cluster](tools/marea-cluster.md)
\ No newline at end of file
+* [Tools Documentation](/tools/)
+ * [Import Metabolic Model](/tools/import-metabolic-model.md)
+ * [Export Metabolic Model](/tools/export-metabolic-model.md)
+ * [RAS Generator](/tools/ras-generator.md)
+ * [RPS Generator](/tools/rps-generator.md)
+ * [MAREA](/tools/marea.md)
+ * [RAS to Bounds](/tools/ras-to-bounds.md)
+ * [Flux Simulation](/tools/flux-simulation.md)
+ * [Flux to Map](/tools/flux-to-map.md)
+ * [MAREA Cluster](/tools/marea-cluster.md)
\ No newline at end of file
diff -r fa93040a75af -r fcdbc81feb45 COBRAxy/docs/getting-started.md
--- a/COBRAxy/docs/getting-started.md Sat Oct 25 15:20:55 2025 +0000
+++ b/COBRAxy/docs/getting-started.md Sun Oct 26 19:27:41 2025 +0000
@@ -74,7 +74,8 @@
```bash
# Generate RAS from expression data
-ras_generator -td $(pwd) \
+# Note: -td is optional and auto-detected after pip install
+ras_generator \
-in expression_data.tsv \
-ra ras_output.tsv \
-rs ENGRO2
@@ -84,7 +85,8 @@
```bash
# Generate enriched pathway maps
-marea -td $(pwd) \
+# Note: -td is optional and auto-detected after pip install
+marea \
-using_RAS true \
-input_data ras_output.tsv \
-choice_map ENGRO2 \
@@ -108,7 +110,7 @@
| **ENGRO2** | Human | ~2,000 | ~500 | Focused human metabolism model |
| **Recon** | Human | ~10,000 | ~2,000 | Comprehensive human metabolism |
-Models are stored in the `local/` directory and include:
+Models are stored in the `src/local/` directory and include:
- SBML files
- GPR rules
- Gene mapping tables
@@ -132,34 +134,17 @@
lactate 23.9 41.2 19.4
```
-## Command Line vs Python API
-
-COBRAxy offers two usage modes:
-
-### Command Line (Quick Analysis)
-```bash
-# Simple command-line execution
-ras_generator -td $(pwd) -in data.tsv -ra output.tsv -rs ENGRO2
-```
-
-### Python API (Programming)
-```python
-import ras_generator
-# Call main function with arguments
-ras_generator.main(['-td', '/path', '-in', 'data.tsv', '-ra', 'output.tsv', '-rs', 'ENGRO2'])
-```
-
## Next Steps
Now that you understand the basics:
-1. **[Quick Start Guide](quickstart.md)** - Complete walkthrough with example data
-2. **[Python API Tutorial](tutorials/python-api.md)** - Learn programmatic usage
-3. **[Tools Reference](tools/)** - Detailed documentation for each tool
-4. **[Examples](examples/)** - Real-world analysis examples
+1. **[Quick Start Guide](/quickstart.md)** - Complete walkthrough with example data
+2. **[Galaxy Tutorial](/tutorials/galaxy-setup.md)** - Web-based analysis setup
+3. **[Tools Reference](/tools/)** - Detailed documentation for each tool
+4. **[Examples](/examples/)** - Real-world analysis examples
## Need Help?
-- **[Troubleshooting](troubleshooting.md)** - Common issues and solutions
+- **[Troubleshooting](/troubleshooting.md)** - Common issues and solutions
- **[GitHub Issues](https://github.com/CompBtBs/COBRAxy/issues)** - Report bugs or ask questions
-- **[Contributing](contributing.md)** - Help improve COBRAxy
\ No newline at end of file
+- **[Contributing](/contributing.md)** - Help improve COBRAxy
\ No newline at end of file
diff -r fa93040a75af -r fcdbc81feb45 COBRAxy/docs/index.html
--- a/COBRAxy/docs/index.html Sat Oct 25 15:20:55 2025 +0000
+++ b/COBRAxy/docs/index.html Sun Oct 26 19:27:41 2025 +0000
@@ -34,6 +34,48 @@
color: var(--theme-color);
}
+ /* Main category styling - bold and larger */
+ .sidebar-nav > ul > li > a,
+ .sidebar-nav > ul > li > strong > a {
+ font-weight: 700 !important;
+ font-size: 1.1em !important;
+ color: var(--theme-color) !important;
+ text-transform: uppercase;
+ letter-spacing: 0.5px;
+ margin-top: 1em;
+ display: block;
+ }
+
+ /* Sub-items styling - normal weight and smaller */
+ .sidebar-nav > ul > li > ul > li > a {
+ font-weight: 400 !important;
+ font-size: 0.95em !important;
+ color: var(--text-color-base) !important;
+ padding-left: 1.5em;
+ }
+
+ /* Collapsible arrows */
+ .sidebar-nav > ul > li.folder > a::before {
+ content: '▶';
+ display: inline-block;
+ margin-right: 0.5em;
+ transition: transform 0.2s;
+ font-size: 0.7em;
+ }
+
+ .sidebar-nav > ul > li.folder.open > a::before {
+ transform: rotate(90deg);
+ }
+
+ /* Hide sub-items by default */
+ .sidebar-nav > ul > li.folder > ul {
+ display: none;
+ }
+
+ .sidebar-nav > ul > li.folder.open > ul {
+ display: block;
+ }
+
.app-name-link {
color: var(--theme-color) !important;
font-weight: 600;
@@ -102,6 +144,12 @@
subMaxLevel: 3,
auto2top: true,
+ // Sidebar configuration
+ alias: {
+ '/.*/_sidebar.md': '/_sidebar.md'
+ },
+ sidebarDisplayLevel: 1, // Expand sidebar to level 1 by default
+
// Search plugin
search: {
maxAge: 86400000, // Expiration time, the default one day
@@ -160,5 +208,68 @@
+
+
+