Computations and statistics on manifolds with geometric structures.

Overview

Geomstats

Code PyPI version Downloads Zenodo
Continuous Integration Build Status python
Code coverage (numpy) Coverage Status np
Code coverage (autograd, tensorflow, pytorch) Coverage Status autogradCoverage Status tfCoverage Status torch
Documentation doc binder tutorial
Community contributions Slack Twitter

NEWS:

Geomstats is an open-source Python package for computations and statistics on manifolds. The package is organized into two main modules: geometry and learning.

The module geometry implements concepts in differential geometry, and the module learning implements statistics and learning algorithms for data on manifolds.

If you find geomstats useful, please kindly cite our paper:

@article{JMLR:v21:19-027,
  author  = {Nina Miolane and Nicolas Guigui and Alice Le Brigant and Johan Mathe and Benjamin Hou and Yann Thanwerdas and Stefan Heyder and Olivier Peltre and Niklas Koep and Hadi Zaatiti and Hatem Hajri and Yann Cabanes and Thomas Gerald and Paul Chauchat and Christian Shewmake and Daniel Brooks and Bernhard Kainz and Claire Donnat and Susan Holmes and Xavier Pennec},
  title   = {Geomstats:  A Python Package for Riemannian Geometry in Machine Learning},
  journal = {Journal of Machine Learning Research},
  year    = {2020},
  volume  = {21},
  number  = {223},
  pages   = {1-9},
  url     = {http://jmlr.org/papers/v21/19-027.html}
}

Install geomstats via pip3

From a terminal (OS X & Linux), you can install geomstats and its requirements with pip3 as follows:

pip3 install geomstats

This method installs the latest version of geomstats that is uploaded on PyPi. Note that geomstats is only available with Python3.

Install geomstats via Git

From a terminal (OS X & Linux), you can install geomstats and its requirements via git as follows:

git clone https://github.com/geomstats/geomstats.git
pip3 install -r requirements.txt

This method installs the latest GitHub version of geomstats.

To add the requirements.txt into a conda environment, you can use the enviroment.yml file as follows:

conda env create --file environment.yml

Note that this only installs the minimum requirements. To add the optional, development, continuous integration and documentation requirements, refer to the files *-requirements.txt.

Install geomstats : Developers

Developers should git clone the master branch of this repository, together with the development requirements and the optional requirements to enable tensorflow and pytorch backends:

pip3 install -r dev-requirements.txt -r opt-requirements.txt

Additionally, we recommend installing our pre-commit hook, to ensure that your code follows our Python style guidelines:

pre-commit install

Choose the backend

Geomstats can run seamlessly with numpy, tensorflow or pytorch. Note that pytorch and tensorflow requirements are optional, as geomstats can be used with numpy only. By default, the numpy backend is used. The visualizations are only available with this backend.

To get the tensorflow and pytorch versions compatible with geomstats, install the optional requirements:

pip3 install -r opt-requirements.txt

You can choose your backend by setting the environment variable GEOMSTATS_BACKEND to numpy, tensorflow or pytorch, and importing the backend module. From the command line:

export GEOMSTATS_BACKEND=pytorch

and in the Python3 code:

import geomstats.backend as gs

Getting started

To use geomstats for learning algorithms on Riemannian manifolds, you need to follow three steps: - instantiate the manifold of interest, - instantiate the learning algorithm of interest, - run the algorithm.

The data should be represented by a gs.array. This structure represents numpy arrays, or tensorflow/pytorch tensors, depending on the choice of backend.

The following code snippet shows the use of tangent Principal Component Analysis on simulated data on the space of 3D rotations.

from geomstats.geometry.special_orthogonal import SpecialOrthogonal
from geomstats.learning.pca import TangentPCA

so3 = SpecialOrthogonal(n=3, point_type="vector")
metric = so3.bi_invariant_metric

data = so3.random_uniform(n_samples=10)

tpca = TangentPCA(metric=metric, n_components=2)
tpca = tpca.fit(data)
tangent_projected_data = tpca.transform(data)

All geometric computations are performed behind the scenes. The user only needs a high-level understanding of Riemannian geometry. Each algorithm can be used with any of the manifolds and metric implemented in the package.

To see additional examples, go to the examples or notebooks directories.

Contributing

See our contributing guidelines!

Acknowledgements

This work is supported by:

  • the Inria-Stanford associated team GeomStats,
  • the European Research Council (ERC) under the European Union's Horizon 2020 research and innovation program (grant agreement G-Statistics No. 786854),
  • the French society for applied and industrial mathematics (SMAI),
  • the National Science Foundation (grant NSF DMS RTG 1501767).
Comments
  • Make submersion and tangent_submersion abstract in LevelSet

    Make submersion and tangent_submersion abstract in LevelSet

    Partially answers #1680 for LevelSet.

    Missing:

    • docstrings

    Need to discuss:

    • should value somehow also be forced to be defined or passing as argument to parent works fine? (I think it should be OK as argument)
    • is the API naming OK? e.g. point and vector, point, respectively?

    @ninamiolane @ymontmarin

    opened by luisfpereira 27
  • Sasaki metric

    Sasaki metric

    Checklist

    • [x] My pull request has a clear and explanatory title.
    • [x] If neccessary, my code is vectorized.
    • [x] I have added apropriate unit tests.
    • [x] I have made sure the code passes all unit tests. (refer to comment below)
    • [x] My PR follows PEP8 guidelines. (refer to comment below)
    • [x] My PR follows geomstats coding style and API.
    • [x] My code is properly documented ~~and I made sure the documentation renders properly.~~ (Link) (Code is documented, but I cannot get sphinx-build docs/ docs/html running, as it fails immediately.)

    Description

    A natural choice of metric on the tangent bundle of a Riemannian manifold is the Sasaki metric and this PR implements it.

    Additional context

    This implementation was originally part of the submission 'Sasaki Metric and Applications in Geodesic Analysis' to the ICLR Computational Geometry & Topology Challenge 2022.

    opened by ambellan 22
  • Doc overview

    Doc overview

    Opening this PR to provide the package with an 'overview.md' file, following the discussion we had with Nina on classes and inheritance friday afternoon! (read here)

    This may or may not be the right place to put it... Most of it could for instance be moved to the geomstats/geometry/README.md and referenced from the index readme, should also be configured available to the website... I'm sure @cshewmake2 will have some ideas about this :)

    I think it would be good for us to have some kind of common reference, for us to work on, available somewhere as soon as possible!

    In the meantime we can discuss here :)

    PS: I also have a Mat(n,p) PR ready to open but I have to go! I'll submit those stepwise, i.e. 'merge-matrices', 'merge-general-linear', 'merge-special-orthogonal' branches ...

    opened by opeltre 18
  • Function spaces implementation : starting with infinite dimensional spheres

    Function spaces implementation : starting with infinite dimensional spheres

    Hello, This is a follow-up for #1194 (apologies for the extreme delay on this) This PR:

    • Introduces function spaces module with the implementation of infinite-dimensional spheres with L2 metrics that are mentioned in Chapter 4.3.2 in the book Functional and Shape Data Analysis.
    • This class will later be used to aid the implementation of general probability measures under the Fisher-Rao metric and SRSF for functions to be added later.
    opened by kiranvad 17
  • Geodesic regression

    Geodesic regression

    Hi Geomstats dev team --

    I'm interested in performing geodesic regression on the Grassmann manifold (see this paper by Thomas Fletcher). I have dependent variables Y sampled from this manifold, where each sample Y_i is in ( R^{n x k} ). For each Y_i, I also have a vector of scalar-valued independent variables, X_i, (like age, sex, other demographic information).

    I'm hoping to use Geomstats to fit the regression of Y ~ X but am unsure of how to go about doing this. It seems that the ML tutorials assume the manifold-valued data will be used as the independent, rather than dependent, variable.

    Any help is much appreciated.

    opened by kristianeschenburg 16
  • Simple new pullbackdiffeo

    Simple new pullbackdiffeo

    Checklist

    • [x] My pull request has a clear and explanatory title.
    • [x] If neccessary, my code is vectorized.
    • [x] I have added apropriate unit tests.
    • [x] I have made sure the code passes all unit tests. (refer to comment below)
    • [x] My PR follows PEP8 guidelines. (refer to comment below)
    • [x] My PR follows geomstats coding style and API.
    • [x] My code is properly documented and I made sure the documentation renders properly. (Link)
    • [x] I have linked to issues and PRs that are relevant to this PR.

    Description

    Issue

    Additional context

    opened by ymontmarin 15
  • Debugging SO(3) in vector form for all backends

    Debugging SO(3) in vector form for all backends

    A number of definitions and changes in functions to make Pytorch and Tensorflow cope with SO(3) in vector form.

    • Another way of computing the rotation vector from a rotation matrix, based on the axis-angle representation for the case theta ~ pi (https://en.wikipedia.org/wiki/Axis%E2%80%93angle_representation#Log_map_from_SO(3)to%7F'%22%60UNIQ--postMath-0000000D-QINU%60%22'%7F(3)). The other one made Tensorflow and Pytorch output wrong results (and I did not have the courage to dig into it). Many tests are now successful with Pytorch and Tensorflow, to the price of raising the threshold a bit. The limit cases are indeed troubling for them, might come from the fact that many computations are done in float32. In particular, it fails some tests that numpy passes (e.g. gs.allclose(base_point, self.group.identity)), which induces more computations and increases numerical errors.

    • set_diag and get_slice were defined to mimic numpy's behavior (and, of course, because of Tensorflow).

    opened by pchauchat 15
  • Create DiscretizedCurvesSpace

    Create DiscretizedCurvesSpace

    I have implemented two different metrics for curves:

    • the L2 metric
    • the Square Root Velocity (SRV) metric (see e.g. https://ieeexplore.ieee.org/abstract/document/5601739)

    The SRV framework is implemented only for curves in a Euclidean space for starters (I have to figure out how to test the fact that the base manifold is Euclidean), because the formulas are considerably simpler in that setting.

    I needed the inner_product_matrix method of Hypersphere so I added it.

    opened by alebrigant 15
  • Reserve `scale` parameter to ScalarProductMetric

    Reserve `scale` parameter to ScalarProductMetric

    Closes #1757 and closes #1758 by removing the scale parameter from various manifolds.

    These are the Hyperbolic, HPDMatrices and PoincarePolydisk manifolds, along with all their related classes.

    @YannCabanes The tests are failing on PoincarePolydisk and I don't understand the objects well enough to remedy the issue. Maybe you could have a look?

    opened by johnharveymath 13
  • Support product manifolds of matrices

    Support product manifolds of matrices

    This PR is related to the PR #1727 adding a product manifold ProductHPDMatricesAndSiegelDisks which is a product manifold of matrices. To add this manifold, we have to modify the way that ProductManifold handles the points shape. This PR is inspired by a discussion with @lpereira95 and @johnharveymath in PR #1727.

    opened by YannCabanes 13
  • Curvature implementation

    Curvature implementation

    Implementation of methods for metric and connection, so that riemannian metrics can return :

    • riemannian tensor
    • curvature
    • ricci tensor
    • scalar curvature
    • sectional curvature (was already implemented if curvature was)

    Tests on shapes of curvature tensors symmetries of riemannian tensor on test files (geometry_test_cases and data_generation), and on negativity of sectional curvature of dirichlet distributions (on another script file, I did not know if I should add it in the test file).

    opened by Jules-Deschamps 13
  • Refactor Product and NFold

    Refactor Product and NFold

    Description

    This PR is a straightforward refactoring. It places all code for products together in product_manifold.py and all code for n-fold manifolds together in nfold_manifold.py.

    Issue

    ProductManifold and NFoldManifold were in one module, while ProductRiemannianMetric and NFoldMetric were in another. This separation of the manifold from the metric is not in line with practice across the code base.

    On the other hand, mixing product classes and n-fold classes together in modules does not seem to have any benefits.

    opened by johnharveymath 2
  • Add product positive reals and complex poincare disks

    Add product positive reals and complex poincare disks

    Add the ProductPositiveRealsAndComplexPoincareDisks manifold.

    The ProductPositiveRealsAndComplexPoincareDisks manifold is defined as a product manifold of the positive reals manifold and (n-1) complex Poincaré disks. The positive reals and complex Poincaré disks product has a product metric. The product metric on the positive reals and complex Poincaré disks product space is the positive reals metric and (n - 1) complex Poincaré metrics multiplied by constants. This product manifold can be used to represent Toeplitz HPD matrices. The ProductPositiveRealsAndComplexPoincareDisks corresponds to the one-dimensional case of ProductHPDMatricesAndSiegelDisks. Indeed, PositiveReals is the one-dimensional case of HPDMatrices and ComplexPoincareDisk is the one-dimensional case of Siegel. In these one-dimensional manifolds, many simplifications occur compared with the multidimensional manifolds since matrices commute in dimension 1.

    References

    .. [Cabanes_2022] Yann Cabanes. Multidimensional complex stationary centered Gaussian autoregressive time series machine learning in Poincaré and Siegel disks: application for audio and radar clutter classification, PhD thesis, tel-03708515, 2022. https://theses.hal.science/tel-03708515 .. [Cabanes_CESAR_2019] Yann Cabanes, Frédéric Barbaresco, Marc Arnaudon et Jérémie Bigot. Unsupervised Machine Learning for Pathological Radar Clutter Clustering: the P-Mean-Shift Algorithm, IEEE, C&ESAR 2019, Rennes, France, 2019. https://hal.archives-ouvertes.fr/hal-02875430 .. [Cabanes_RADAR_2019] Yann Cabanes, Frédéric Barbaresco, Marc Arnaudon et Jérémie Bigot. Non-Supervised High Resolution Doppler Machine Learning for Pathological Radar Clutter, IEEE, RADAR 2019, Toulon, France, 2019. https://hal.archives-ouvertes.fr/hal-02875415 .. [Cabanes_GSI_2019] Yann Cabanes, Frédéric Barbaresco, Marc Arnaudon et Jérémie Bigot. Toeplitz Hermitian Positive Definite Matrix Machine Learning based on Fisher Metric, IEEE, GSI 2019, Toulouse, France, 2019. https://hal.archives-ouvertes.fr/hal-02875403 .. [Le_Brigant_2017] Alice Le Brigant. Probability on the spaces of curves and the associated metric spaces using information geometry; radar applications, PhD thesis, tel-01635258, 2017. https://theses.hal.science/tel-01635258 .. [Jeuris_2016] B. Jeuris and R. Vandebril. The Kahler mean of Block-Toeplitz matrices with Toeplitz structured blocks, 2016. https://epubs.siam.org/doi/pdf/10.1137/15M102112X .. [Yang_2013] Marc Arnaudon, Frédéric Barbaresco and Le Yang. Riemannian Medians and Means With Applications to Radar Signal Processing, IEEE, 2013.

    opened by YannCabanes 10
  • Add method to change the lists in `scalar_product_metric.py`

    Add method to change the lists in `scalar_product_metric.py`

    Follows #1740.

    Scaling factor for wrapping of methods of underlying_metric in ScalarProducMetric is given by verifying if method name belongs to SQRT_LIST, LINEAR_LIST, QUADRATIC_LIST, INVERSE_LIST, INVERSE_QUADRATIC_LIST, and mapping it with the right value.

    Currently, there's no proper way of updating these lists. Something like this works, but looks more like hacking than programming:

    
    from geomstats.geometry import scalar_product_metric
    
    scalar_product_metric.SQRT_LIST.append("my_new_method")
    

    A better solution may be something like (with better naming):

    from geomstats.geometry.scalar_product_metric import add_scaled_method
    
    add_scaled_method("my_new_method", scaling_type="sqrt")
    

    This is relevant e.g. for "power" users that need to implement a new metric with a method whose output needs to be scaled.

    (With @johnharveymath.)

    enhancement 
    opened by luisfpereira 0
  • Add functions and associated tests for Binomial and Exponential Distributions

    Add functions and associated tests for Binomial and Exponential Distributions

    Checklist

    • [x] My pull request has a clear and explanatory title.
    • [x] If neccessary, my code is vectorized.
    • [x] I have added apropriate unit tests.
    • [ ] I have made sure the code passes all unit tests. (refer to comment below)
    • [x] My PR follows PEP8 guidelines. (refer to comment below)
    • [x] My PR follows geomstats coding style and API.
    • [x] My code is properly documented and I made sure the documentation renders properly. (Link)
    • [x] I have linked to issues and PRs that are relevant to this PR.

    Description

    Add metric_matrix and geodesic for Binomial and Exponential Distributions as well as associated tests. Code requires #1753 resolved to work properly with pytorch.

    Issue

    Additional context

    opened by tramy1258 12
  • Refactor `InformationManifoldMixins` for consistency with children and `FisherRaoMetric`

    Refactor `InformationManifoldMixins` for consistency with children and `FisherRaoMetric`

    This refactoring should address several points:

    1 InformationManifoldMixins contains methods that are not defined by any children and should probably be removed: point_to_cdf and cdf.

    2 In children, the structure point_to_pdf and pdf as different methods is not followed. This needs to be homogenized. I suggest to keep the children way, i.e. pdf defined within point_to_pdf.

    I've suggested in #1612 to follow the current approach in InformationManifoldMixins, but looking to cases such as CenteredNormalDistributions we can see it is worthy sometimes to do some operations only once (i.e. do not repeat them for each call of pdf(x), which is only possible following the approach currently implemented in children.

    3 pmf should be called pdf to allow it to be used with FisherRaoMetric and to have the same API for all distributions.

    bug refactoring information geometry 
    opened by luisfpereira 0
Releases(2.5.0)
  • v2.4.1(Jan 28, 2022)

    What's Changed

    • Stable by @ninamiolane in https://github.com/geomstats/geomstats/pull/1177
    • Add the dataset of cells to the nb 01 data on manifolds by @ninamiolane in https://github.com/geomstats/geomstats/pull/1178
    • Modify shape analysis notebook by @alebrigant in https://github.com/geomstats/geomstats/pull/1180
    • make codecov sensible again by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1181
    • Un-stall PR on General Elastic Metric by @ninamiolane in https://github.com/geomstats/geomstats/pull/1182
    • full rank matrices by @annacalissano in https://github.com/geomstats/geomstats/pull/1186
    • Improve MDM by @qbarthelemy in https://github.com/geomstats/geomstats/pull/1188
    • Improve MDM, 2 by @qbarthelemy in https://github.com/geomstats/geomstats/pull/1189
    • Add predict_proba to MDM by @qbarthelemy in https://github.com/geomstats/geomstats/pull/1193
    • Add exp and log maps for SPD Euclidean by @qbarthelemy in https://github.com/geomstats/geomstats/pull/1192
    • Patching Backend Operations by @captain-pool in https://github.com/geomstats/geomstats/pull/1190
    • reformat code snippets for highlighting in documentation by @nguigs in https://github.com/geomstats/geomstats/pull/1196
    • add extrinsic to spherical and its tangent by @nguigs in https://github.com/geomstats/geomstats/pull/1195
    • Fix typo by @heytitle in https://github.com/geomstats/geomstats/pull/1199
    • updating symeig with eigh by @captain-pool in https://github.com/geomstats/geomstats/pull/1201
    • Committing new files for the psd matrices of rank k by @annacalissano in https://github.com/geomstats/geomstats/pull/1191
    • Fix issue #1083 by @alebrigant in https://github.com/geomstats/geomstats/pull/1209
    • Cleaning hyperbolic doc and vectorisation by @tgeral68 in https://github.com/geomstats/geomstats/pull/1211
    • Add list of hackathons to the README by @ninamiolane in https://github.com/geomstats/geomstats/pull/1214
    • rename EmbeddedManifold into LevelSet by @nguigs in https://github.com/geomstats/geomstats/pull/1219
    • Add visualization of SPD(2) matrices through Ellipsis. by @ninamiolane in https://github.com/geomstats/geomstats/pull/1210
    • Rm deprecated code in lie_groups.py about loss and grad by @ninamiolane in https://github.com/geomstats/geomstats/pull/1215
    • Temporarily remove tests with python 3.7 3.8 for the hackathon (only 3.9 is tested) by @ninamiolane in https://github.com/geomstats/geomstats/pull/1221
    • add circle with representation by one angle by @nguigs in https://github.com/geomstats/geomstats/pull/1212
    • pytest migration - 1 by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1205
    • Example of geodesic regression on the Grassmann manifold by @nguigs in https://github.com/geomstats/geomstats/pull/1220
    • FIX: Change docstring for the manifold PSD(n, k) by @ninamiolane in https://github.com/geomstats/geomstats/pull/1230
    • Add documentation in autodiff modules by @ninamiolane in https://github.com/geomstats/geomstats/pull/1226
    • faster spd checking by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1143
    • Add triu and test by @mortenapedersen in https://github.com/geomstats/geomstats/pull/1232
    • Add API for symplectic and leapfrog steps in integrators by @ninamiolane in https://github.com/geomstats/geomstats/pull/1233
    • Template for lddmm metric on landmarks by @nguigs in https://github.com/geomstats/geomstats/pull/883
    • Try running tests on Heisenberg by @ninamiolane in https://github.com/geomstats/geomstats/pull/1238
    • Add 3D heisenberg group in vector representation and unit tests by @mortenapedersen in https://github.com/geomstats/geomstats/pull/1213
    • Try PR on subRiemannian geometry by @ninamiolane in https://github.com/geomstats/geomstats/pull/1239
    • Add sub-Riemannian metric class by @mortenapedersen in https://github.com/geomstats/geomstats/pull/1237
    • Add a subcase to torch solve_sylvester by @emaignant in https://github.com/geomstats/geomstats/pull/1223
    • Add hamiltonian, cometric and inner-coproduct by @ninamiolane in https://github.com/geomstats/geomstats/pull/1240
    • Remove outdated loss and grad functions in riemannian metric by @ninamiolane in https://github.com/geomstats/geomstats/pull/1241
    • Xpennec stiefel tests by @xpennec in https://github.com/geomstats/geomstats/pull/1236
    • Allow to pass initial point to FrechetMean estimator by @nguigs in https://github.com/geomstats/geomstats/pull/1234
    • add subcase to tensorflow + add test by @nguigs in https://github.com/geomstats/geomstats/pull/1242
    • Graphspace by @annacalissano in https://github.com/geomstats/geomstats/pull/1244
    • Cholesky space by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1142
    • Clean style of sub-Riemannian metrics by @ninamiolane in https://github.com/geomstats/geomstats/pull/1250
    • Adapt DeepSource config by @ninamiolane in https://github.com/geomstats/geomstats/pull/1255
    • fix docs by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1258
    • Fix docs by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1259
    • update documentation key by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1260
    • Refactor/clean module of discrete curves by @alebrigant in https://github.com/geomstats/geomstats/pull/1248
    • clean test_symmetric_matrices by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1261
    • Update contributing: nose -> pytest by @ninamiolane in https://github.com/geomstats/geomstats/pull/1262
    • Acknowledge recent contributors by @ninamiolane in https://github.com/geomstats/geomstats/pull/1265
    • Add lead author(s) to each module by @ninamiolane in https://github.com/geomstats/geomstats/pull/1266
    • cleaning github actions by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1252
    • check by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1268
    • Rename lr to init_step_size everywhere by @nguigs in https://github.com/geomstats/geomstats/pull/1274
    • Introduce n-fold manifolds by @nguigs in https://github.com/geomstats/geomstats/pull/1249
    • build docs through commands not through action by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1275
    • rewrite by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1276
    • conditional deployement by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1277
    • Fix docs GitHub actions 3 by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1278
    • Add notebook with cancer cell shapes analysis by @ninamiolane in https://github.com/geomstats/geomstats/pull/1280
    • Add hacks to help FrechetMean computations + Display quantiles to the mean shape by @ninamiolane in https://github.com/geomstats/geomstats/pull/1284
    • NEW: doc strings generator and checker by @ninamiolane in https://github.com/geomstats/geomstats/pull/1290
    • Test if rotation matrices are antipodals before trying to compute the Log by @ninamiolane in https://github.com/geomstats/geomstats/pull/1229
    • Add missing nb-thumbnails tags to render tutorials on doc website by @ninamiolane in https://github.com/geomstats/geomstats/pull/1291
    • add missing notebook by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1293
    • clean test_spd_matrices with parametrization by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1263
    • Hotfix: Make tests pass again w. py38 and skipping failing tests by @ninamiolane in https://github.com/geomstats/geomstats/pull/1296
    • Fix Build->Test Badge on README.rst by @ninamiolane in https://github.com/geomstats/geomstats/pull/1297
    • check for repo name by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1300
    • Hotfix: Bring back linting on tests/ folder + fix some code style issues by @ninamiolane in https://github.com/geomstats/geomstats/pull/1299
    • Add more conditions to docs.yml by @SaitejaUtpala in https://github.com/geomstats/geomstats/pull/1301
    • Geomstats v 2.4.1 by @ninamiolane in https://github.com/geomstats/geomstats/pull/1305
    • Merge master (v2.4.1) into stable by @ninamiolane in https://github.com/geomstats/geomstats/pull/1306

    New Contributors

    • @annacalissano made their first contribution in https://github.com/geomstats/geomstats/pull/1186
    • @qbarthelemy made their first contribution in https://github.com/geomstats/geomstats/pull/1188
    • @captain-pool made their first contribution in https://github.com/geomstats/geomstats/pull/1190
    • @heytitle made their first contribution in https://github.com/geomstats/geomstats/pull/1199
    • @mortenapedersen made their first contribution in https://github.com/geomstats/geomstats/pull/1232

    Full Changelog: https://github.com/geomstats/geomstats/compare/2.3.1...v2.4.1

    Source code(tar.gz)
    Source code(zip)
  • v1.6(Apr 27, 2018)

3DMV jointly combines RGB color and geometric information to perform 3D semantic segmentation of RGB-D scans.

3DMV 3DMV jointly combines RGB color and geometric information to perform 3D semantic segmentation of RGB-D scans. This work is based on our ECCV'18 p

Владислав Молодцов 0 Feb 6, 2022
GeoTransformer - Geometric Transformer for Fast and Robust Point Cloud Registration

Geometric Transformer for Fast and Robust Point Cloud Registration PyTorch imple

Zheng Qin 220 Jan 5, 2023
A Temporal Extension Library for PyTorch Geometric

Documentation | External Resources | Datasets PyTorch Geometric Temporal is a temporal (dynamic) extension library for PyTorch Geometric. The library

Benedek Rozemberczki 1.9k Jan 7, 2023
Geometric Deep Learning Extension Library for PyTorch

Documentation | Paper | Colab Notebooks | External Resources | OGB Examples PyTorch Geometric (PyG) is a geometric deep learning extension library for

Matthias Fey 16.5k Jan 8, 2023
Multi-Scale Geometric Consistency Guided Multi-View Stereo

ACMM [News] The code for ACMH is released!!! [News] The code for ACMP is released!!! About ACMM is a multi-scale geometric consistency guided multi-vi

Qingshan Xu 118 Jan 4, 2023
Code for "FGR: Frustum-Aware Geometric Reasoning for Weakly Supervised 3D Vehicle Detection", ICRA 2021

FGR This repository contains the python implementation for paper "FGR: Frustum-Aware Geometric Reasoning for Weakly Supervised 3D Vehicle Detection"(I

Yi Wei 31 Dec 8, 2022
A PyTorch implementation of "DGC-Net: Dense Geometric Correspondence Network"

DGC-Net: Dense Geometric Correspondence Network This is a PyTorch implementation of our work "DGC-Net: Dense Geometric Correspondence Network" TL;DR A

null 191 Dec 16, 2022
Geometric Vector Perceptron --- a rotation-equivariant GNN for learning from biomolecular structure

Geometric Vector Perceptron Code to accompany Learning from Protein Structure with Geometric Vector Perceptrons by B Jing, S Eismann, P Suriana, RJL T

Dror Lab 85 Dec 29, 2022
Certifiable Outlier-Robust Geometric Perception

Certifiable Outlier-Robust Geometric Perception About This repository holds the implementation for certifiably solving outlier-robust geometric percep

null 83 Dec 31, 2022
Pytorch Geometric Tutorials

Pytorch Geometric Tutorials

Antonio Longa 648 Jan 8, 2023
A geometric deep learning pipeline for predicting protein interface contacts.

A geometric deep learning pipeline for predicting protein interface contacts.

null 44 Dec 30, 2022
Code for "SRHEN: Stepwise-Refining Homography Estimation Network via Parsing Geometric Correspondences in Deep Latent Space"

SRHEN This is a better and simpler implementation for "SRHEN: Stepwise-Refining Homography Estimation Network via Parsing Geometric Correspondences in

null 1 Oct 28, 2022
Geometric Algebra package for JAX

JAXGA - JAX Geometric Algebra GitHub | Docs JAXGA is a Geometric Algebra package on top of JAX. It can handle high dimensional algebras by storing onl

Robin Kahlow 36 Dec 22, 2022
Geometric Vector Perceptrons --- a rotation-equivariant GNN for learning from biomolecular structure

Geometric Vector Perceptron Implementation of equivariant GVP-GNNs as described in Learning from Protein Structure with Geometric Vector Perceptrons b

Dror Lab 142 Dec 29, 2022
Computational modelling of ray propagation through optical elements using the principles of geometric optics (Ray Tracer)

Computational modelling of ray propagation through optical elements using the principles of geometric optics (Ray Tracer) Introduction By applying the

Son Gyo Jung 1 Jul 9, 2022
Buffon’s needle: one of the oldest problems in geometric probability

Buffon-s-Needle Buffon’s needle is one of the oldest problems in geometric proba

null 3 Feb 18, 2022
Contains code for Deep Kernelized Dense Geometric Matching

DKM - Deep Kernelized Dense Geometric Matching Contains code for Deep Kernelized Dense Geometric Matching We provide pretrained models and code for ev

Johan Edstedt 83 Dec 23, 2022
Implementation of GeoDiff: a Geometric Diffusion Model for Molecular Conformation Generation (ICLR 2022).

GeoDiff: a Geometric Diffusion Model for Molecular Conformation Generation [OpenReview] [arXiv] [Code] The official implementation of GeoDiff: A Geome

Minkai Xu 155 Dec 26, 2022
All the essential resources and template code needed to understand and practice data structures and algorithms in python with few small projects to demonstrate their practical application.

Data Structures and Algorithms Python INDEX 1. Resources - Books Data Structures - Reema Thareja competitiveCoding Big-O Cheat Sheet DAA Syllabus Inte

Shushrut Kumar 129 Dec 15, 2022