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)

A python3 tool to take a 360 degree survey of the RF spectrum (hamlib + rotctld + RTL-SDR/HackRF)

RF Light House (rflh) A python script to use a rotor and a SDR device (RTL-SDR or HackRF One) to measure the RF level around and get a data set and be

Pavel Milanes (CO7WT) 11 Dec 13, 2022
Run PowerShell command without invoking powershell.exe

PowerLessShell PowerLessShell rely on MSBuild.exe to remotely execute PowerShell scripts and commands without spawning powershell.exe. You can also ex

Mr.Un1k0d3r 1.2k Jan 03, 2023
This is code to fit per-pixel environment map with spherical Gaussian lobes, using LBFGS optimization

Spherical Gaussian Optimization This is code to fit per-pixel environment map with spherical Gaussian lobes, using LBFGS optimization. This code has b

41 Dec 14, 2022
BESS: Balanced Evolutionary Semi-Stacking for Disease Detection via Partially Labeled Imbalanced Tongue Data

Balanced-Evolutionary-Semi-Stacking Code for the paper ''BESS: Balanced Evolutionary Semi-Stacking for Disease Detection via Partially Labeled Imbalan

0 Jan 16, 2022
Info and sample codes for "NTU RGB+D Action Recognition Dataset"

"NTU RGB+D" Action Recognition Dataset "NTU RGB+D 120" Action Recognition Dataset "NTU RGB+D" is a large-scale dataset for human action recognition. I

Amir Shahroudy 578 Dec 30, 2022
A general python framework for visual object tracking and video object segmentation, based on PyTorch

PyTracking A general python framework for visual object tracking and video object segmentation, based on PyTorch. 📣 Two tracking/VOS papers accepted

2.6k Jan 04, 2023
Music library streaming app written in Flask & VueJS

djtaytay This is a little toy app made to explore Vue, brush up on my Python, and make a remote music collection accessable through a web interface. I

Ryan Tasson 6 May 27, 2022
Pytorch implementation for the Temporal and Object Quantification Networks (TOQ-Nets).

TOQ-Nets-PyTorch-Release Pytorch implementation for the Temporal and Object Quantification Networks (TOQ-Nets). Temporal and Object Quantification Net

Zhezheng Luo 9 Jun 30, 2022
a reimplementation of Optical Flow Estimation using a Spatial Pyramid Network in PyTorch

pytorch-spynet This is a personal reimplementation of SPyNet [1] using PyTorch. Should you be making use of this work, please cite the paper according

Simon Niklaus 269 Jan 02, 2023
A minimal yet resourceful implementation of diffusion models (along with pretrained models + synthetic images for nine datasets)

A minimal yet resourceful implementation of diffusion models (along with pretrained models + synthetic images for nine datasets)

Vikash Sehwag 65 Dec 19, 2022
Code release for ICCV 2021 paper "Anticipative Video Transformer"

Anticipative Video Transformer Ranked first in the Action Anticipation task of the CVPR 2021 EPIC-Kitchens Challenge! (entry: AVT-FB-UT) [project page

Facebook Research 123 Dec 13, 2022
Semantic similarity computation with different state-of-the-art metrics

Semantic similarity computation with different state-of-the-art metrics Description • Installation • Usage • License Description TaxoSS is a semantic

6 Jun 22, 2022
Swin-Transformer is basically a hierarchical Transformer whose representation is computed with shifted windows.

Swin-Transformer Swin-Transformer is basically a hierarchical Transformer whose representation is computed with shifted windows. For more details, ple

旷视天元 MegEngine 9 Mar 14, 2022
The code of NeurIPS 2021 paper "Scalable Rule-Based Representation Learning for Interpretable Classification".

Rule-based Representation Learner This is a PyTorch implementation of Rule-based Representation Learner (RRL) as described in NeurIPS 2021 paper: Scal

Zhuo Wang 53 Dec 17, 2022
Differentiable rasterization applied to 3D model simplification tasks

nvdiffmodeling Differentiable rasterization applied to 3D model simplification tasks, as described in the paper: Appearance-Driven Automatic 3D Model

NVIDIA Research Projects 336 Dec 30, 2022
Wordle-solver - Wordle answer generation program in python

🟨 Wordle Solver 🟩 Wordle answer generation program in python ✔️ Requirements U

Dahyun Kang 4 May 28, 2022
Efficient Training of Audio Transformers with Patchout

PaSST: Efficient Training of Audio Transformers with Patchout This is the implementation for Efficient Training of Audio Transformers with Patchout Pa

165 Dec 26, 2022
Convolutional Neural Network to detect deforestation in the Amazon Rainforest

Convolutional Neural Network to detect deforestation in the Amazon Rainforest This project is part of my final work as an Aerospace Engineering studen

5 Feb 17, 2022
Registration Loss Learning for Deep Probabilistic Point Set Registration

RLLReg This repository contains a Pytorch implementation of the point set registration method RLLReg. Details about the method can be found in the 3DV

Felix Järemo Lawin 35 Nov 02, 2022
Extremely easy multi instancing software for minecraft speedrunning.

Easy Multi Extremely easy multi/single instancing software for minecraft speedrunning. A couple of goals of this project: Setup multi in minutes No fi

Duncan 8 Jul 16, 2022