Metadata-Version: 2.4
Name: GElib
Version: 0.2.6
Summary: Group equivariant neural network library
Author-email: Risi Kondor <risi@uchicago.edu>
License: NON_COMMERICAL SOFTWARE LICENSE FOR THE GELIB SOFTWARE LIBRARY
        
        Copyright (c) 2021- Imre (Risi) Kondor. All rights reserved.
        
        
        DEFINITIONS
        
        "Program" means a copy of the GELIB software library or parts of the GELIB software library explicitly 
        marked in the source code as distributed under this Noncommercial Software License.
        
        "Copyright holder" means the author of GELIB, Imre Kondor, who retains the copyright to Program. 
        
        "Work based on the Program" means either the Program or any derivative work under copyright law: that is 
        to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or 
        translated into another language. (Hereinafter, translation is included without limitation in the term 
        "modification".)
        
        "Using the Program" means any act of creating executables that contain or directly use libraries that 
        are part of the Program, running any part of the Program or any tools that are part of the Program, or 
        creating works based on the Program.
        
        Each licensee is addressed as "you".
        
        
        TERMS AND CONDITIONS FOR USE, COPYING, DISTRIBUTION AND MODIFICATION
        
        1. This License grants you permission to use the Program free of charge for any noncommercial purpose, 
        including teaching and research at universities, colleges and other educational institutions, research 
        at non-profit research institutions, and personal non-profit purposes. 
        
        2. This License does NOT grant permission to use the Program for commercial purposes, including but not 
        restricted to (a) bundling or integrating the Program with any hardware product or any other software for 
        transfer, sale or license to a third party (even if distributing the Program on separate media and not 
        charging for the Program); (b) providing customers with a link to the Program or a copy of the Program 
        for use with hardware or another program purchased by that customer; or (c) use in connection with the 
        performance of services for which you are compensated (d) use in connection with research and development 
        activities in the service of developing commercial products or obtaining patents for derived products 
        such as pharmaceuticals; (e) other forms of indirect commercial use, such as on a website that accepts 
        advertising money for content. 
        
        3. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any 
        medium, provided that you retain the copyright notice on each file of the source code and conspicuously 
        and appropriately include a copy of this License and Disclaimer of Warranty with the Program in a file 
        named LICENSE.TXT.
        
        4. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on 
        the Program, and copy and distribute such modifications or work under the terms of Section 2 above, 
        provided that:
        
        a) You cause the modified files to carry prominent notices stating that you changed the files and the 
        date of any change.
        
        b) You cause any work that you distribute or publish, that in whole or in part contains or is derived 
        from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under 
        the terms of this License.
        
        c) You retain the original copyright notice on each file of this Program's source code and conspicuously 
        include a copy of this License and Disclaimer of Warranty under the terms described in Section 3. 
        
        These requirements apply to the modified work as a whole. If identifiable sections of that work are not 
        derived from the Program, and can be reasonably considered independent and separate works in themselves, 
        then this License, and its terms, do not apply to those sections when you distribute them as separate 
        works. But when you distribute the same sections as part of a whole which is a work based on the Program, 
        the distribution of the whole must be on the terms of this License, whose regulations for other licensees 
        extend to the entire whole, and thus to each and every part regardless of who wrote it. (If the same, 
        independent sections are distributed as part of a package that is otherwise reliant on, or is based on 
        the Program, then the distribution of the whole package, including but not restricted to the independent 
        section, must be on the unmodified terms of this License, regadless of who the author of the included 
        sections was.)
        
        Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely 
        by you; rather, the intent is to exercise the right to control the distribution of derivative or collective 
        works based or reliant on the Program.
        
        In addition, mere aggregation of another work not based on the Program with the Program (or with a work 
        based on the Program) on a volume of storage or distribution medium does not bring the other work under 
        the scope of this License.
        
        5. You may copy and distribute the Program (or a work based on it, under Section 3) in object code or 
        executable form under the terms of Sections 3 and 4 above provided that you also accompany it with the 
        complete corresponding machine-readable source code under the terms of Sections 3 and 4, as well as the 
        License and Disclaimer of Warranty, under the terms of Section 3. 
        
        If distribution of executable or object code is made by offering access to copy from a designated place, 
        then offering equivalent access to copy the source code from the same place counts as distribution of the 
        source code, even though third parties are not compelled to copy the source along with the object code.
        
        6. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this 
        License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will 
        automatically terminate your rights under this License. However, parties who have received copies, or rights, 
        from you under this License will not have their licenses terminated so long as such parties remain in full 
        compliance.
        
        7. You are not required to accept this License, since you have not signed it. Nothing else grants you 
        permission to modify or distribute the Program or its derivative works; law prohibits these actions if you 
        do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the 
        Program), you indicate your acceptance of this License and all its terms and conditions for copying, 
        distributing or modifying the Program or works based on it, to do so.
        
        8. Each time you redistribute the Program (or any work based on the Program), the recipient automatically 
        receives a license from the original licensor to copy, distribute or modify the Program subject to these 
        terms and conditions. You may not impose any further restrictions on the recipients to exercise the 
        rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
        
        9. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason 
        (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) 
        that contradict the conditions of this License, they do not excuse you from the conditions of this License. 
        If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other 
        pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a 
        patent license would not permit royalty-free redistribution of the Program by all those who receive copies 
        directly or indirectly through you, then the only way you could satisfy both it and this License would be to 
        refrain entirely from distribution of the Program. If any portion of this section is held invalid or 
        unenforceable under any particular circumstance, the balance of the section is intended to apply and the 
        section as a whole is intended to apply in other circumstances.
        
        10. If the distribution and/or use of the Program are restricted in certain countries either by patents or 
        by copyrighted interfaces, the original copyright holder who places the Program under this License may add an 
        explicit geographical distribution limitation excluding those countries, so that distribution is permitted 
        only in or among countries not thus excluded. In such case, this License incorporates the limitation as if 
        written in the body of this License.
        
        11. Copyright holder retains the right to grant broader rights to the Program to individuals or to commercial 
        entities on a case by case basis, possibly for a fee.
        
        
        DISCLAIMER OF WARRANTY
        
        12. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
        INCLUDING, BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
        ARE DISCLAIMED. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 
        PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 
        
        13. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED ON IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY 
        OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 
        INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO 
        USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
        OR PROFITS; BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
        POSSIBILITY OF SUCH DAMAGE.
        
        
        
        
        
        
        
        
        
Project-URL: homepage, https://github.com/risi-kondor/GElib
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: torch
Dynamic: license-file

# GElib

GElib is a C++/CUDA library for building equivariant neural networks. The library can be used as a pure 
C++ library or as a C++ extension for PyTorch. 
GElib uses [`cnine`](https://github.com/risi-kondor/cnine) as its backend. 
Documentation for the C++ API can be found in the 'doc' directory. 
Documentation for the PyTorch API is at https://risi-kondor.github.io/GElib/.

GElib is released under a combination of the Mozilla Public License v. 2.0. and a custom noncommercial license to be found in the file NONCOMMERCIAL.TXT. 
The latter also applies to the `cnine` component. Commercial use requires a licence from the 
author(s). 
<br><br>

## Installing GElib as a Python module

GElib is distributed in source code format, therefore to install it you must have a working C++ 
compiler supporting C++17 (or higher) on your system. You also need PyTorch. 
If these requirements are satified, in most cases GElib can be installed simply by running  
```bash
   pip install gelib
   ``` 
or 
```bash
   pip3 install gelib
   ``` 

To install the package with CUDA support, set the `WITH_CUDA` environment variable to `TRUE`:
```bash
   export WITH_CUDA="TRUE"
   ```
*before* running the above command. 
Installing with CUDA requires the CUDA development environment to be present 
on your system and its version must match that which PyTorch was compiled against. 
<br><br>

### Fallback installation method

The fallback installation method is to clone the library with 
```bash
   git clone --recurse-submodules git@github.com:risi-kondor/GElib.git
   ```
and install it manually by running `pip install -e .` in its root directory. 
The `--recurse-submodules` flag ensures that a copy of `cnine` is bundled inside the GElib directory structure. 
<br><br>

## Credits 

Lead developer: Risi Kondor

Contributors: Erik Henning Thiede, Ryan Keane

