fermi
The FitnEss, The Relatedness and The other MetrIcs
fermi is a modular Python framework for analyzing the main Economic Complexity metrics and features.
It provides tools to explore the hidden structure of economies through:
- 📊 Matrix preprocessing: raw cleaning, sparse conversion, Comparative advantage RCA/ICA, transformation and thresholding.
- 🧠 Fitness & complexity: compute Fitness, Complexity ECI, PCI and other metrics via multiple methods.
- 🌐 Relatedness metrics: product space, taxonomy, assist matrix.
- 📈 Prediction models: GDP forecasting, density models, XGBoost.
- ✅ Validation metrics: AUC, confusion matrix, prediction@k.
📦 Getting Started
Requirements
⚠️ Requires Python ≥ 3.0 To correnctly install and use the package, you need to have
numpy ≥ 1.24
pandas ≥ 1.5
scikit-learn ≥ 1.2
scipy ≥ 1.9
matplotlib ≥ 3.5
seaborn
bokeh ≥ 2.4
tqdm
networkx ≥ 2.6
bicm ≥ 3.3.1
Quick Installation (Recommended)
To install fermi directly from PyPI in a virtual environment:
python -m venv fermi-env
source fermi-env/bin/activate # or fermi-env\Scripts\activate on Windows
pip install fermi-cref
Using fermi-cref on Google Colab
To use fermi on Colab, you can install it directly from PyPI with:
!pip install fermi-cref
🚀 Basic functionalities
Fitness and Complexity module
The main module to generate an Economic Complexity object and initialize it (with a biadjacency matrix):
import fermi
myefc = fermi.efc()
myefc.load(my_biadjacency_matrix, *possible kwargs*)
To compute the Revealed Comparative Advantage (Balassa index) and binarize its value
myefc.compute_rca().binarize()
To compute the Fitness and the Complexity (using the original [Tacchella2012] algorithm)
fitness, complexity = myefc.get_fitness_complexity()
To compute the diversification and the ubiquity
div, ubi = myefc.get_diversification_ubiquity()
To compute the ECI index (using the eigenvalue method)
eci, pci = myefc.get_eci_pci()
Relatedness module
The module to generate cooccurrences and similar relatedness measures is
myproj = fermi.RelatednessMetrics()
myproj.load(my_biadjacency_matrix, *possible kwargs*)
The cooccurrence can be evaluated using
relatedness = myproj.get_projection(projection_method="cooccurrence")
validated_relatedness, validated_values = myproj.get_bicm_projection(projection_method="cooccurrence", validation_method="fdr")
See a more detailed description in the API in the documentation.
🌐 How to cite
If you use the fermi modules, please cite its location on Github
https://github.com/EFC-data/fermi
References
[Tacchella2018] Tacchella A., Mazzilli D., Pietronero L. A dynamical systems approach to gross domestic product forecasting. Nature Phys 14, 861–865 (2018)
Credits
Authors: CREF Team
Acknowledgements
We gratefully acknowledge the invaluable contributions, support, and foundational code provided by Andrea Tacchella, Emanuele Pugliese, Dario Mazzilli, and Andrea Zaccaria.
Metadata
Release files for fermi-cref 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fermi_cref-0.2.0.tar.gz | 52.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fermi_cref-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 106.3 kB
Release files / fermi_cref-0.2.0.tar.gz
| Download URL | fermi_cref-0.2.0.tar.gz |
|---|---|
| Size | 52.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8b54a4eae0baff9ab2fb4114feea6674a69b19c87f85982503070cd08aa8d0ae
|
|
BLAKE2b-256 checksum How to use checksums |
43773279b013cb4ea1e9c8e0f4b82a490a784b3884b2a66e480ea6cd0d2e0e99
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.12
|
Release files / fermi_cref-0.2.0-py3-none-any.whl
| Download URL | fermi_cref-0.2.0-py3-none-any.whl |
|---|---|
| Size | 53.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
524f3d847f96fa81f21fc9671ba7b82848acffd4d33bbe91e97a4ac9b18104f6
|
|
BLAKE2b-256 checksum How to use checksums |
190180be8cf7ead8a996fc0be5098625313c4d14579e4d5c7c8475f45f12fee0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.12
|