mariopy

Multifunctional Analysis of Regions through Input-Output

https://github.com/it-is-me-mario/mario

Science Score: 49.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README
  • Academic publication links
    Links to: sciencedirect.com, iop.org, zenodo.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (17.1%) to scientific vocabulary
Last synced: 7 months ago · JSON representation

Repository

Multifunctional Analysis of Regions through Input-Output

Basic Info
  • Host: GitHub
  • Owner: it-is-me-mario
  • License: gpl-3.0
  • Language: Python
  • Default Branch: main
  • Size: 30.6 MB
Statistics
  • Stars: 46
  • Watchers: 1
  • Forks: 15
  • Open Issues: 30
  • Releases: 11
Created over 4 years ago · Last pushed 9 months ago
Metadata Files
Readme Changelog License Zenodo

README.rst

.. image:: https://avatars.githubusercontent.com/u/121170888?s=400&u=4cec21e036afea744bef6886998fa302fca02ce0&v=4
   :width: 100
   :align: right

.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
    :target: https://github.com/psf/black
    
.. image:: https://readthedocs.org/projects/mario-suite/badge/?version=latest
    :target: https://mario-suite.readthedocs.io/en/latest/index.html
    :alt: Documentation Status  
    
.. image:: https://badge.fury.io/py/mariopy.svg
    :target: https://badge.fury.io/py/mariopy
    

   
.. image:: https://zenodo.org/badge/421900437.svg
   :target: https://zenodo.org/badge/latestdoi/421900437

*******
MARIO
*******

Multifunctional Analysis of Regions through Input-Output.  (`Documents `_)


What is it
-----------
**MARIO** is a python package for handling input-output tables and models inspired by `Pymrio  `_ .
MARIO aims to provide a *simple* & *intuitive* API for common IO tasks without
needing in-depth programming knowledge. MARIO supporst automatic parsing of different
structured tables such EXIOBASE, EORA, EUROSTAT, and FIGARO in different formats namely:

* Single region 
* Multi region
* Hybrid tables
* Monetary tables
* Input-Output tables
* Supply-Use tables

When databases are not structured, MARIO supports parsing data from xlsx, csv, txt files
or pandas.DataFrames.

More than parsing data, MARIO includes some basic functionalities:

* Aggregation of databases
* SUT to IOT transformation
* Modifying database in terms of adding:
   * New sectors, activities or commodities to the database
   * Adding new extensions to the satellite account
* Scneario and shock analysis
* Backward and forward linkages analysis
* Extracting single region database from multi region databases
* Balance test 
* Productivity test
* Exporting the databases into different formats for scenarios analyzed
* Interactive visualization routines


Requirements
------------

MARIO has been tested on macOS and Windows.

To run MARIO, a couple of things are needed:

#. Being in love with Input-Output :-)
#. The Python programming language
#. A number of Python adds-on packages
#. MARIO software itself

************
Installation
************

The easiest way to make MARIO software working is to use the free
conda package manager which can install the current and future MARIO
depencies in an easy and user friendly way.

To get conda, `download and install "Anaconda Distribution" `_ 
. Between differnet options for running python codes, we strongly suggest, `Spyder `_, 
which is  a free and open source scientific environment written in Python, for Python, and designed by and for scientists,
engineers and data analysts.

You can install mario using pip or from source code. It is suggested to create a new environment by running the following command in the anaconda prompt

.. code-block:: python

   conda create -n mario python=3.10

If you create a new environment for mario, to use it, you need to activate the mario environment each time by writing
the following line in *Anaconda Prompt*

.. code-block:: python

   conda activate mario

Now you can use pip to install mario on your environment as follow:

.. code-block:: python

  pip install mariopy

You can also install from the source code!
     
**********
Quickstart
**********

A simple test for Input-Output Table (IOT) and Supply-Use Table (SUT) is included in mario.

To use the IOT test, call

.. code-block:: python

   import mario
   test_iot = mario.load_test('IOT')

and to use the SUT test, call

.. code-block:: python

   test_sut = mario.load_test('SUT')

To see the configurations of the data, you can print them:

.. code-block:: python

   print(test_iot)
   print(test_sut)

To see specific sets of the tables like regions or value added,
get_index function can be used:

.. code-block:: python

   print(test_iot.get_index('Region'))
   print(test_sut.get_index('Factor of production'))

To visualize some data, various plot functions can be used:

.. code-block:: python

   test_iot.plot_matrix(....)

Specific modifications on the database can be done, such as
SUT to IOT transformation:

.. code-block:: python

   reformed_iot = test.to_iot(method='B')

The changes can be tracked by metadata. The history can be checked by calling:

.. code-block:: python

   reformed_iot.meta_history

The new database can be saved into excel,txt or csv file:

.. code-block:: python

   reformed_iot.to_excel(path='a folder//database.xlsx')

********
Citation
********

In case you use mario, you should use our peer reviewed publication (`Tahavori, Golinucci, Rinaldi, et al. `_) for citiation!


.. _RST pckgs:


*********
Read more
*********

Testing MARIO
-------------
The current version of Mario has achieved a test coverage of 49%. This coverage includes a comprehensive 100% assessment of the fundamental mathematical engine. 
Additional tests are currently in active development to enhance the package's reliability. 
Mario utilizes `pytest `_  as its primary tool for conducting unit tests. For a more detailed analysis of the test coverage pertaining to mario's unit tests, 
you can execute the following command:

.. code-block:: python

   pytest --cov=mario tests/ 

.. note::
   * This project is under active development. 
   * More examples will be uploaded through time to the gallery.
   * More parsers will be added to the next version.


Publications
------------

* Assessing environmental and market implications of steel decarbonisation strategies: a hybrid input-output model for the European Union (`Rinaldi et al, Environmental Research Letters, 2024  `_ )
* Assessing critical materials demand in global energy transition scenarios based on the Dynamic Extraction and Recycling Input-Output framework (DYNERIO) (`Rinaldi et al, Resources Conservation adn Recycling, 2023  `_ )
* Three different directions in which the European Union could replace Russian natural gas (`Nikas et al, Energy, 2024 `_ )
* Investigating the economic and environmental impacts of a technological shift towards hydrogen-based solutions for steel manufacture in high-renewable electricity mix scenarios for Italy (`Marco Conte et al, IOP Conf. Ser.: Earth Environ. Sci., 2022 `_)


Support Materials
-----------------

* `Input-Output analysis and modelling with MARIO Open University Course  `_ 
  


License
-------

.. image:: https://www.gnu.org/graphics/gplv3-or-later.png
    :target: https://www.gnu.org/licenses/gpl-3.0.en.html


This work is licensed under a `GNU GENERAL PUBLIC LICENSE `_


Supporting Institutions
-----------------------

.. image:: https://github.com/it-is-me-mario/MARIO/blob/pre-releasev0.3.0/doc/source/_static/images/enextgen.png?raw=true
   :width: 120
   :align: left
   :target: https://www.enextgen.it/

.. image:: https://raw.githubusercontent.com/it-is-me-mario/MARIO/7cc701e2e0f23d2cdc0f01c05d6c6e33b30b682e/doc/source/_static/images/polimi.svg
   :width: 200
   :align: left
   :target: https://polimi.it/
   

Owner

  • Name: MARIO
  • Login: it-is-me-mario
  • Kind: organization

Multifunctional Analysis of Regions through Input-Output

GitHub Events

Total
  • Create event: 10
  • Release event: 2
  • Issues event: 24
  • Watch event: 5
  • Delete event: 8
  • Member event: 1
  • Issue comment event: 4
  • Push event: 89
  • Pull request review comment event: 18
  • Pull request review event: 23
  • Pull request event: 20
  • Fork event: 2
Last Year
  • Create event: 10
  • Release event: 2
  • Issues event: 24
  • Watch event: 5
  • Delete event: 8
  • Member event: 1
  • Issue comment event: 4
  • Push event: 89
  • Pull request review comment event: 18
  • Pull request review event: 23
  • Pull request event: 20
  • Fork event: 2

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 278
  • Total Committers: 5
  • Avg Commits per committer: 55.6
  • Development Distribution Score (DDS): 0.252
Past Year
  • Commits: 36
  • Committers: 2
  • Avg Commits per committer: 18.0
  • Development Distribution Score (DDS): 0.278
Top Committers
Name Email Commits
Mohammad Amin Tahavori 5****t 208
Lorenzo Rinaldi l****3@g****m 50
Nicolò Golinucci n****i@g****m 11
LorenzoRinaldi l****1@g****m 8
Amedeo Felice Alberio a****a@f****m 1
Committer Domains (Top 20 + Academic)
fb.com: 1

Issues and Pull Requests

Last synced: 7 months ago

All Time
  • Total issues: 71
  • Total pull requests: 63
  • Average time to close issues: 4 months
  • Average time to close pull requests: 18 days
  • Total issue authors: 7
  • Total pull request authors: 6
  • Average comments per issue: 0.48
  • Average comments per pull request: 0.13
  • Merged pull requests: 53
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 17
  • Pull requests: 16
  • Average time to close issues: 3 days
  • Average time to close pull requests: about 23 hours
  • Issue authors: 4
  • Pull request authors: 2
  • Average comments per issue: 0.24
  • Average comments per pull request: 0.0
  • Merged pull requests: 13
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • LorenzoRinaldi (27)
  • mohammadamint (22)
  • nigolred (18)
  • graebnerc (1)
  • adrienjacob (1)
  • maximikos (1)
  • CamiCit (1)
Pull Request Authors
  • mohammadamint (49)
  • LorenzoRinaldi (26)
  • nigolred (4)
  • geo-mathijs (2)
  • gitter-badger (1)
  • AAmedeo (1)
Top Labels
Issue Labels
enhancement (20) bug (17) documentation (5) good first issue (1) help wanted (1) NXG (1) FUL (1) dependencies (1) deprecate (1)
Pull Request Labels
enhancement (7) bug (2) dependencies (2) deprecate (2) NXG (1) FUL (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 58 last-month
  • Total dependent packages: 1
  • Total dependent repositories: 1
  • Total versions: 10
  • Total maintainers: 2
pypi.org: mariopy

A python package for automating input-output (IO) calculations, models,visualization and scenario analysis

  • Versions: 10
  • Dependent Packages: 1
  • Dependent Repositories: 1
  • Downloads: 58 Last month
Rankings
Dependent packages count: 4.7%
Stargazers count: 11.9%
Forks count: 11.9%
Average: 14.6%
Dependent repos count: 21.6%
Downloads: 23.1%
Maintainers (2)
Last synced: 7 months ago

Dependencies

Pipfile pypi
  • twine * develop
Pipfile.lock pypi
  • bleach ==4.1.0 develop
  • certifi ==2021.10.8 develop
  • charset-normalizer ==2.0.7 develop
  • colorama ==0.4.4 develop
  • docutils ==0.18 develop
  • idna ==3.3 develop
  • importlib-metadata ==4.8.1 develop
  • keyring ==23.2.1 develop
  • packaging ==21.2 develop
  • pkginfo ==1.7.1 develop
  • pygments ==2.10.0 develop
  • pyparsing ==2.4.7 develop
  • pywin32-ctypes ==0.2.0 develop
  • readme-renderer ==30.0 develop
  • requests ==2.26.0 develop
  • requests-toolbelt ==0.9.1 develop
  • rfc3986 ==1.5.0 develop
  • six ==1.16.0 develop
  • tqdm ==4.62.3 develop
  • twine ==3.4.2 develop
  • urllib3 ==1.26.7 develop
  • webencodings ==0.5.1 develop
  • zipp ==3.6.0 develop
doc/docs-requirements.txt pypi
  • IPython >=7.22.0
  • ipykernel *
  • nbsphinx *
  • numpy >=1.21.2
  • openpyxl >=3.0.6
  • pandas >=1.3.3
  • plotly >=4.12.0
  • pymrio >=0.4.6
  • sphinx >=1.6.4
  • sphinx-autobuild *
  • sphinx_rtd_theme >=0.2.4
  • tabulate >=0.8.9
  • xlsxwriter <=1.3.7
requirements.txt pypi
  • IPython >=7.22.0
  • numpy >=1.21.2
  • openpyxl >=3.0.6
  • pandas >=1.3.3
  • plotly >=4.12.0
  • pymrio *
  • tabulate >=0.8.9
  • xlsxwriter <=1.3.7
setup.py pypi
  • IPython *
  • numpy *
  • openpyxl *
  • pandas *
  • plotly *
  • pymrio *
  • tabulate *
  • xlsxwriter *