LinkingLines
LinkingLines: Using the Hough Transform to Cluster Line Segments and Mesoscale Feature Extraction - Published in JOSS (2024)
Science Score: 95.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 5 DOI reference(s) in README and JOSS metadata -
✓Academic publication links
Links to: wiley.com, joss.theoj.org, zenodo.org -
✓Committers with academic emails
1 of 4 committers (25.0%) from academic institutions -
○Institutional organization owner
-
✓JOSS paper metadata
Published in Journal of Open Source Software
Scientific Fields
Repository
Link and Cluster Cartesian Line Segments
Basic Info
Statistics
- Stars: 2
- Watchers: 2
- Forks: 3
- Open Issues: 0
- Releases: 3
Metadata Files
README.md
Welcome to LinkingLines!
Read the Full documentation on ReadtheDocs!
1. Introduction
Welcome to the documentation for our Python module that performs the Hough Transform on lines from geospatial data, clusters it using Agglomerative Clustering. This module also includes custom plotting scripts and feature extraction methods to help you analyze and visualize your data effectively.
This code was used to create the results published in Kubo Hutchison et al., 2023. Initially, it was designed to link together mapped dike segments in Cartesian space to find their true lengths. This code can be applied to any linear features including roads, fractures, and other types of linear data.
Data Clustering: Apply Agglomerative Clustering to group similar data points, this can be used for data reduction, analysis, and mapping.
Data Visualization: Custom plotting scripts help you visualize and analyze your data, making it easier to identify patterns and anomalies.
Feature Extraction: Extract meaningful features from clustered data to perform further analysis, such as linear or radial type features.
Full documentation can be found on ReadTheDocs
2. Installation
To use this module, make sure you have Python installed (preferably Python 3.x). You can install the required packages using pip:
bash
pip install linkinglines
3. Quick Start
```python import pandas as pd import numpy as np import matplotlib.pyplot as plt import linkinglines as ll
data=ll.readFile('path/to/data')
dtheta=2 #degrees drho=500 #meters
dikeset, Z=ll.AggCluster(data) lines,evaluation=examineCluster(data) fig,ax=DotsLines(lines, ColorBy='AvgTheta')
```
We have three examples: 1. In-depth tutorial with Hough transform, clustering, and feature extraction using Spanish Peaks Data CSV file. 2. Hough Transform and feature extraction on Venus lineament data shape file. 3. Hough Transform on fracture data geoJSON.
Data from: 1. https://agupubs.onlinelibrary.wiley.com/doi/full/10.1029/2022GC010842 2. https://pubs.usgs.gov/sim/3121/ 3. https://doi.org/10.5281/zenodo.7919843
4. Contributing Guidelines
If you find bugs or issues please open up an issues. We also welcome requests for additional features.
If you would like to contribute code please do so in a separate branch and open up an issue describing your contribution.
git clone git@github.com:USER/LinkingLines.git
git checkout my-development-branch
We recommend using a virtual environment to manage packages. We use poetry to manage dependencies and building.
See more about poetry.
``` pipx install poetry # you may need to install pipx first
cd linkinglines # go to the repo
poetry install --with test,dev # install in editable mode
add your code
poetry run pytest # test code locally
```
Before submitting your pull request please verify the following:
- Code is documented in NumPy Docstring Style
- Code is tested and passes test
- To run the tests please go to "/tests" and run
poetry run pytestorpytest - Add your test code to any file with the name
test - More here on pytest and testing practices
- To run the tests please go to "/tests" and run
- Open an issue and pull request
- After your pull request the code will be reviewed by maintainer (namely @aikubo).
- After passing review and automated tests it will be added to the next release and published to pypi.
Owner
- Name: Allison Kubo
- Login: aikubo
- Kind: user
- Location: University of Oregon
- Website: aikubo.github.io
- Repositories: 4
- Profile: https://github.com/aikubo
PhD Candidate at the University of Oregon Coadvised by Joe Dufek & Leif Karlstrom
JOSS Publication
LinkingLines: Using the Hough Transform to Cluster Line Segments and Mesoscale Feature Extraction
Authors
Tags
python hough transform earth science clusteringGitHub Events
Total
- Watch event: 1
Last Year
- Watch event: 1
Committers
Last synced: 5 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Allison Kubo Hutchison | a****o@g****m | 190 |
| nialov | n****n@g****m | 3 |
| Hugo Ledoux | h****x@t****l | 1 |
| Allison Kubo Hutchison | a****h@p****n | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 4 months ago
All Time
- Total issues: 9
- Total pull requests: 29
- Average time to close issues: 2 months
- Average time to close pull requests: 6 days
- Total issue authors: 2
- Total pull request authors: 3
- Average comments per issue: 1.33
- Average comments per pull request: 0.21
- Merged pull requests: 29
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- nialov (5)
- evetion (4)
Pull Request Authors
- aikubo (33)
- nialov (6)
- hugoledoux (2)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- pypi 15 last-month
- Total dependent packages: 0
- Total dependent repositories: 1
- Total versions: 4
- Total maintainers: 1
pypi.org: linkinglines
Process linear geospatial data and link them using the Hough Transform and Agglomerative Clustering
- Homepage: https://github.com/aikubo/LinkingLines
- Documentation: https://linkinglines.readthedocs.io/en/latest/
- License: MIT
-
Latest release: 2.1.2
published over 1 year ago
Rankings
Maintainers (1)
Dependencies
- alabaster0.7.12py_0conda-forge *
- alsa-lib1.2.6.1h7f98852_0conda-forge *
- arrow1.2.3pyhd8ed1ab_0conda-forge *
- astroid2.12.9py310hff52083_0conda-forge *
- atomicwrites1.4.1pyhd8ed1ab_0conda-forge *
- attr2.5.1h166bdaf_1conda-forge *
- attrs22.1.0pyh71513ae_1conda-forge *
- autopep81.6.0pyhd8ed1ab_1conda-forge *
- babel2.10.3pyhd8ed1ab_0conda-forge *
- backcall0.2.0pyh9f0ad1d_0conda-forge *
- backports.functools_lru_cache1.6.4pyhd8ed1ab_0conda-forge *
- backports1.0py_2conda-forge *
- beautifulsoup44.11.1pyha770c72_0conda-forge *
- binaryornot0.4.4py_1conda-forge *
- black22.6.0py310hff52083_2conda-forge *
- bleach5.0.1pyhd8ed1ab_0conda-forge *
- brotli-bin1.0.9h166bdaf_7conda-forge *
- brotli1.0.9h166bdaf_7conda-forge *
- brotlipy0.7.0py310h5764c6d_1004conda-forge *
- bzip21.0.8h7f98852_4conda-forge *
- c-ares1.18.1h7f98852_0conda-forge *
- ca-certificates2022.6.15ha878542_0conda-forge *
- certifi2022.6.15pyhd8ed1ab_1conda-forge *
- cffi1.15.1py310h255011f_0conda-forge *
- chardet5.0.0py310hff52083_0conda-forge *
- charset-normalizer2.1.1pyhd8ed1ab_0conda-forge *
- click8.1.3py310hff52083_0conda-forge *
- cloudpickle2.1.0pyhd8ed1ab_0conda-forge *
- colorama0.4.5pyhd8ed1ab_0conda-forge *
- cookiecutter2.1.1pyh6c4a22f_0conda-forge *
- cryptography37.0.4py310h597c629_0conda-forge *
- cycler0.11.0pyhd8ed1ab_0conda-forge *
- dbus1.13.6h5008d03_3conda-forge *
- debugpy1.6.3py310hd8f1fbe_0conda-forge *
- decorator5.1.1pyhd8ed1ab_0conda-forge *
- defusedxml0.7.1pyhd8ed1ab_0conda-forge *
- diff-match-patch20200713pyh9f0ad1d_0conda-forge *
- dill0.3.5.1pyhd8ed1ab_0conda-forge *
- docutils0.19py310hff52083_0conda-forge *
- entrypoints0.4pyhd8ed1ab_0conda-forge *
- expat2.4.8h27087fc_0conda-forge *
- fftw3.3.10nompi_hf0379b8_105conda-forge *
- flake84.0.1pyhd8ed1ab_2conda-forge *
- font-ttf-dejavu-sans-mono2.37hab24e00_0conda-forge *
- font-ttf-inconsolata3.000h77eed37_0conda-forge *
- font-ttf-source-code-pro2.038h77eed37_0conda-forge *
- font-ttf-ubuntu0.83hab24e00_0conda-forge *
- fontconfig2.14.0h8e229c2_0conda-forge *
- fonts-conda-ecosystem10conda-forge *
- fonts-conda-forge10conda-forge *
- fonttools4.37.1py310h5764c6d_0conda-forge *
- freetype2.12.1hca18f0e_0conda-forge *
- gettext0.19.8.1h73d1719_1008conda-forge *
- giflib5.2.1h36c2ea0_2conda-forge *
- glib-tools2.72.1h6239696_0conda-forge *
- glib2.72.1h6239696_0conda-forge *
- gst-plugins-base1.20.3hf6a322e_0conda-forge *
- gstreamer1.20.3hd4edc92_1conda-forge *
- icu70.1h27087fc_0conda-forge *
- idna3.3pyhd8ed1ab_0conda-forge *
- imagesize1.4.1pyhd8ed1ab_0conda-forge *
- importlib-metadata4.11.4py310hff52083_0conda-forge *
- importlib_resources5.9.0pyhd8ed1ab_0conda-forge *
- inflection0.5.1pyh9f0ad1d_0conda-forge *
- intervaltree3.0.2py_0conda-forge *
- ipykernel6.15.2pyh210e3f2_0conda-forge *
- ipython7.33.0py310hff52083_0conda-forge *
- ipython_genutils0.2.0py_1conda-forge *
- isort5.10.1pyhd8ed1ab_0conda-forge *
- jack1.9.18h8c3723f_1002conda-forge *
- jaraco.classes3.2.2pyhd8ed1ab_0conda-forge *
- jedi0.18.1pyhd8ed1ab_2conda-forge *
- jeepney0.8.0pyhd8ed1ab_0conda-forge *
- jellyfish0.9.0py310h5764c6d_1conda-forge *
- jinja2-time0.2.0pyhd8ed1ab_3conda-forge *
- jinja23.1.2pyhd8ed1ab_1conda-forge *
- joblib1.1.0pyhd8ed1ab_0conda-forge *
- jpeg9eh166bdaf_2conda-forge *
- jsonschema4.15.0pyhd8ed1ab_0conda-forge *
- jupyter_client7.3.5pyhd8ed1ab_0conda-forge *
- jupyter_core4.11.1py310hff52083_0conda-forge *
- jupyterlab_pygments0.2.2pyhd8ed1ab_0conda-forge *
- keyring23.9.1py310hff52083_0conda-forge *
- keyutils1.6.1h166bdaf_0conda-forge *
- kiwisolver1.4.4py310hbf28c38_0conda-forge *
- krb51.19.3h3790be6_0conda-forge *
- lazy-object-proxy1.7.1py310h5764c6d_1conda-forge *
- lcms22.12hddcbb42_0conda-forge *
- ld_impl_linux-642.36.1hea4e1c9_2conda-forge *
- lerc4.0.0h27087fc_0conda-forge *
- libblas3.9.016_linux64_openblasconda-forge *
- libbrotlicommon1.0.9h166bdaf_7conda-forge *
- libbrotlidec1.0.9h166bdaf_7conda-forge *
- libbrotlienc1.0.9h166bdaf_7conda-forge *
- libcap2.64ha37c62d_0conda-forge *
- libcblas3.9.016_linux64_openblasconda-forge *
- libclang1314.0.6default_h3a83d3e_0conda-forge *
- libclang14.0.6default_h2e3cab8_0conda-forge *
- libcups2.3.3h3e49a29_2conda-forge *
- libcurl7.83.1h7bff187_0conda-forge *
- libdb6.2.32h9c3ff4c_0conda-forge *
- libdeflate1.13h166bdaf_0conda-forge *
- libedit3.1.20191231he28a2e2_2conda-forge *
- libev4.33h516909a_1conda-forge *
- libevent2.1.10h9b69904_4conda-forge *
- libffi3.4.2h7f98852_5conda-forge *
- libflac1.3.4h27087fc_0conda-forge *
- libgcc-ng12.1.0h8d9b700_16conda-forge *
- libgfortran-ng12.1.0h69a702a_16conda-forge *
- libgfortran512.1.0hdcd56e2_16conda-forge *
- libglib2.72.1h2d90d5f_0conda-forge *
- libgomp12.1.0h8d9b700_16conda-forge *
- libiconv1.16h516909a_0conda-forge *
- liblapack3.9.016_linux64_openblasconda-forge *
- libllvm1414.0.6he0ac6c6_0conda-forge *
- libnghttp21.47.0hdcd2b5c_1conda-forge *
- libnsl2.0.0h7f98852_0conda-forge *
- libogg1.3.4h7f98852_1conda-forge *
- libopenblas0.3.21pthreads_h78a6416_3conda-forge *
- libopus1.3.1h7f98852_1conda-forge *
- libpng1.6.37h753d276_4conda-forge *
- libpq14.5hd77ab85_0conda-forge *
- libsndfile1.0.31h9c3ff4c_1conda-forge *
- libsodium1.0.18h36c2ea0_1conda-forge *
- libspatialindex1.9.3h9c3ff4c_4conda-forge *
- libsqlite3.39.3h753d276_0conda-forge *
- libssh21.10.0haa6b8db_3conda-forge *
- libstdcxx-ng12.1.0ha89aaad_16conda-forge *
- libtiff4.4.0h0e0dad5_3conda-forge *
- libtool2.4.6h9c3ff4c_1008conda-forge *
- libudev1249h166bdaf_4conda-forge *
- libuuid2.32.1h7f98852_1000conda-forge *
- libvorbis1.3.7h9c3ff4c_0conda-forge *
- libwebp-base1.2.4h166bdaf_0conda-forge *
- libwebp1.2.4h522a892_0conda-forge *
- libxcb1.13h7f98852_1004conda-forge *
- libxkbcommon1.0.3he3ba5ed_0conda-forge *
- libxml22.9.14h22db469_4conda-forge *
- libxslt1.1.35h8affb1d_0conda-forge *
- libzlib1.2.12h166bdaf_2conda-forge *
- lxml4.9.1py310h5764c6d_0conda-forge *
- markupsafe2.1.1py310h5764c6d_1conda-forge *
- matplotlib-base3.5.3py310h8d5ebf3_2conda-forge *
- matplotlib-inline0.1.6pyhd8ed1ab_0conda-forge *
- matplotlib-label-lines0.5.1pypi_0pypi *
- matplotlib3.5.3py310hff52083_2conda-forge *
- mccabe0.6.1py_1conda-forge *
- mistune2.0.4pyhd8ed1ab_0conda-forge *
- more-itertools8.14.0pyhd8ed1ab_0conda-forge *
- munkres1.1.4pyh9f0ad1d_0conda-forge *
- mypy_extensions0.4.3py310hff52083_5conda-forge *
- mysql-common8.0.30haf5c9bc_1conda-forge *
- mysql-libs8.0.30h28c427c_1conda-forge *
- nbclient0.6.7pyhd8ed1ab_0conda-forge *
- nbconvert-core7.0.0pyhd8ed1ab_0conda-forge *
- nbconvert-pandoc7.0.0pyhd8ed1ab_0conda-forge *
- nbconvert7.0.0pyhd8ed1ab_0conda-forge *
- nbformat5.4.0pyhd8ed1ab_0conda-forge *
- ncurses6.3h27087fc_1conda-forge *
- nest-asyncio1.5.5pyhd8ed1ab_0conda-forge *
- nspr4.32h9c3ff4c_1conda-forge *
- nss3.78h2350873_0conda-forge *
- numpy1.23.2py310h53a5b5f_0conda-forge *
- numpydoc1.4.0pyhd8ed1ab_1conda-forge *
- openjpeg2.5.0h7d73246_1conda-forge *
- openssl1.1.1qh166bdaf_0conda-forge *
- packaging21.3pyhd8ed1ab_0conda-forge *
- pandas1.4.4py310h769672d_0conda-forge *
- pandoc2.19.2ha770c72_0conda-forge *
- pandocfilters1.5.0pyhd8ed1ab_0conda-forge *
- parso0.8.3pyhd8ed1ab_0conda-forge *
- pathspec0.10.1pyhd8ed1ab_0conda-forge *
- patsy0.5.2pyhd8ed1ab_0conda-forge *
- pcre8.45h9c3ff4c_0conda-forge *
- pexpect4.8.0pyh9f0ad1d_2conda-forge *
- pickleshare0.7.5py_1003conda-forge *
- pillow9.2.0py310hbd86126_2conda-forge *
- pip22.2.2pyhd8ed1ab_0conda-forge *
- pkgutil-resolve-name1.3.10pyhd8ed1ab_0conda-forge *
- platformdirs2.5.2pyhd8ed1ab_1conda-forge *
- pluggy1.0.0py310hff52083_3conda-forge *
- ply3.11py_1conda-forge *
- portaudio19.6.0h57a0ea0_5conda-forge *
- proj9.0.1h93bde94_1conda-forge *
- prompt-toolkit3.0.31pyha770c72_0conda-forge *
- psutil5.9.2py310h5764c6d_0conda-forge *
- pthread-stubs0.4h36c2ea0_1001conda-forge *
- ptyprocess0.7.0pyhd3deb0d_0conda-forge *
- pulseaudio14.0h7f54b18_8conda-forge *
- pycodestyle2.8.0pyhd8ed1ab_0conda-forge *
- pycparser2.21pyhd8ed1ab_0conda-forge *
- pydocstyle6.1.1pyhd8ed1ab_0conda-forge *
- pyflakes2.4.0pyhd8ed1ab_0conda-forge *
- pygments2.13.0pyhd8ed1ab_0conda-forge *
- pylint2.15.2pyhd8ed1ab_0conda-forge *
- pyls-spyder0.4.0pyhd8ed1ab_0conda-forge *
- pyopenssl22.0.0pyhd8ed1ab_0conda-forge *
- pyparsing3.0.9pyhd8ed1ab_0conda-forge *
- pyproj3.3.1py310hf94497c_1conda-forge *
- pyqt5-sip12.11.0py310hd8f1fbe_0conda-forge *
- pyqt5.15.7py310h29803b5_0conda-forge *
- pyqtwebengine5.15.7py310h29803b5_0conda-forge *
- pyrsistent0.18.1py310h5764c6d_1conda-forge *
- pysocks1.7.1pyha2e5f31_6conda-forge *
- python-dateutil2.8.2pyhd8ed1ab_0conda-forge *
- python-fastjsonschema2.16.1pyhd8ed1ab_0conda-forge *
- python-lsp-black1.2.1pyhd8ed1ab_0conda-forge *
- python-lsp-jsonrpc1.0.0pyhd8ed1ab_0conda-forge *
- python-lsp-server1.5.0pyhd8ed1ab_0conda-forge *
- python-slugify6.1.2pyhd8ed1ab_0conda-forge *
- python3.10.6h582c2e5_0_cpythonconda-forge *
- python_abi3.102_cp310conda-forge *
- pytoolconfig1.2.2pyhd8ed1ab_0conda-forge *
- pytz2022.2.1pyhd8ed1ab_0conda-forge *
- pyxdg0.28pyhd8ed1ab_0conda-forge *
- pyyaml6.0py310h5764c6d_4conda-forge *
- pyzmq23.2.1py310h330234f_0conda-forge *
- qdarkstyle3.0.3pyhd8ed1ab_0conda-forge *
- qstylizer0.2.2pyhd8ed1ab_0conda-forge *
- qt-main5.15.4ha5833f6_2conda-forge *
- qt-webengine5.15.4hcbadb6c_3conda-forge *
- qtawesome1.1.1pyhd8ed1ab_0conda-forge *
- qtconsole-base5.3.2pyha770c72_0conda-forge *
- qtconsole5.3.2pyhd8ed1ab_0conda-forge *
- qtpy2.2.0pyhd8ed1ab_0conda-forge *
- readline8.1.2h0f457ee_0conda-forge *
- requests2.28.1pyhd8ed1ab_1conda-forge *
- rope1.3.0pyhd8ed1ab_0conda-forge *
- rtree1.0.0py310hbdcdc62_1conda-forge *
- scikit-learn1.1.2py310h0c3af53_0conda-forge *
- scipy1.9.1py310hdfbd76f_0conda-forge *
- seaborn-base0.12.0pyhd8ed1ab_0conda-forge *
- seaborn0.12.0hd8ed1ab_0conda-forge *
- secretstorage3.3.3py310hff52083_0conda-forge *
- setuptools65.3.0pyhd8ed1ab_1conda-forge *
- sip6.6.2py310hd8f1fbe_0conda-forge *
- six1.16.0pyh6c4a22f_0conda-forge *
- snowballstemmer2.2.0pyhd8ed1ab_0conda-forge *
- sortedcontainers2.4.0pyhd8ed1ab_0conda-forge *
- soupsieve2.3.2.post1pyhd8ed1ab_0conda-forge *
- sphinx5.1.1pyhd8ed1ab_1conda-forge *
- sphinxcontrib-applehelp1.0.2py_0conda-forge *
- sphinxcontrib-devhelp1.0.2py_0conda-forge *
- sphinxcontrib-htmlhelp2.0.0pyhd8ed1ab_0conda-forge *
- sphinxcontrib-jsmath1.0.1py_0conda-forge *
- sphinxcontrib-qthelp1.0.3py_0conda-forge *
- sphinxcontrib-serializinghtml1.1.5pyhd8ed1ab_2conda-forge *
- spyder-kernels2.3.3py310hff52083_0conda-forge *
- spyder5.3.3py310hff52083_0conda-forge *
- sqlite3.39.3h4ff8645_0conda-forge *
- statsmodels0.13.2py310hde88566_0conda-forge *
- text-unidecode1.3py_0conda-forge *
- textdistance4.4.0pyhd8ed1ab_0conda-forge *
- threadpoolctl3.1.0pyh8a188c0_0conda-forge *
- three-merge0.1.1pyh9f0ad1d_0conda-forge *
- tinycss21.1.1pyhd8ed1ab_0conda-forge *
- tk8.6.12h27826a3_0conda-forge *
- toml0.10.2pyhd8ed1ab_0conda-forge *
- tomli2.0.1pyhd8ed1ab_0conda-forge *
- tomlkit0.11.4pyha770c72_0conda-forge *
- tornado6.2py310h5764c6d_0conda-forge *
- traitlets5.3.0pyhd8ed1ab_0conda-forge *
- typing-extensions4.3.0hd8ed1ab_0conda-forge *
- typing3.10.0.0pyhd8ed1ab_0conda-forge *
- typing_extensions4.3.0pyha770c72_0conda-forge *
- tzdata2022ch191b570_0conda-forge *
- ujson5.4.0py310hd8f1fbe_0conda-forge *
- unicodedata214.0.0py310h5764c6d_1conda-forge *
- unidecode1.3.4pyhd8ed1ab_0conda-forge *
- urllib31.26.11pyhd8ed1ab_0conda-forge *
- watchdog2.1.9py310hff52083_0conda-forge *
- wcwidth0.2.5pyh9f0ad1d_2conda-forge *
- webencodings0.5.1py_1conda-forge *
- whatthepatch1.0.2pyhd8ed1ab_0conda-forge *
- wheel0.37.1pyhd8ed1ab_0conda-forge *
- wrapt1.14.1py310h5764c6d_0conda-forge *
- wurlitzer3.0.2pyhd8ed1ab_2conda-forge *
- xcb-util-image0.4.0h166bdaf_0conda-forge *
- xcb-util-keysyms0.4.0h166bdaf_0conda-forge *
- xcb-util-renderutil0.3.9h166bdaf_0conda-forge *
- xcb-util-wm0.4.1h166bdaf_0conda-forge *
- xcb-util0.4.0h166bdaf_0conda-forge *
- xorg-libxau1.0.9h7f98852_0conda-forge *
- xorg-libxdmcp1.1.3h7f98852_0conda-forge *
- xz5.2.6h166bdaf_0conda-forge *
- yaml0.2.5h7f98852_2conda-forge *
- yapf0.32.0pyhd8ed1ab_0conda-forge *
- zeromq4.3.4h9c3ff4c_1conda-forge *
- zipp3.8.1pyhd8ed1ab_0conda-forge *
- zstd1.5.2h6239696_4conda-forge *
- actions/checkout v4 composite
- actions/upload-artifact v1 composite
- openjournals/openjournals-draft-action master composite
- actions/checkout master composite
- actions/setup-python v3 composite
- pypa/gh-action-pypi-publish master composite
- matplotlib >=3.7.2
- matplotlib_label_lines >=0.6.0
- numpy >=1.25.2
- pandas >=2.0.3
- pyproj >=3.6.0
- scikit_learn >=1.3.0
- scipy >=1.11.2
- seaborn >=0.12.2
- statsmodels >=0.14.0
- ipykernel *
- jupyterlab ==4.0.6
- linkinglines *
- matplotlib ==3.7.2
- matplotlib_label_lines ==0.6.0
- myst-nb ==0.17.2
- myst-parser *
- nbsphinx ==0.9.3
- notebook ==7.0.4
- numpy ==1.25.2
- pandas ==2.0.3
- pyproj ==3.6.0
- scikit_learn ==1.3.0
- scipy ==1.11.2
- seaborn ==0.12.2
- statsmodels ==0.14.0
