# packages

pkgId: 3748d6713f6e303fdf7a51dff2ddb72998e4d8c3313ecb464f2e019872432b3e
name: python-aiida-fleur
arch: src
version: 2.0.0
epoch: 0
release: 1
url: https://pypi.org/project/aiida-fleur/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiida-fleur-2.0.0-1.src.rpm
checksum_type: sha256
summary:
  AiiDA Plugin for running the FLEUR code and its input generator. Also includes high-level workchains and utilities

description:
  fleur.scf | SCF-cycle of Fleur. Converge the charge density and the Total energy with multiple FLEUR runs
  fleur.eos | Calculate and Equation of States with FLEUR (currently cubic systems only)
  fleur.dos | Calculate a Density of States (DOS) with FLEUR
  fleur.band | Calculate a Band structure with FLEUR
  fleur.relax | Relaxation of the atomic positions of a crystal structure with FLEUR
  fleur.init_cls | Calculate initial corelevel shifts and formation energies with FLEUR
  fleur.corehole | Workflow for corehole calculations, calculation of Binding energies with FLEUR
  fleur.dmi | Calculates Dzyaloshinskii–Moriya Interaction energy dispersion of a spin spiral
  fleur.ssdisp | Calculates exchange interaction energy dispersion of a spin spiral
  fleur.mae | Calculates Magnetic Anisotropy Energy
  See the AiiDA documentation for general info about the AiiDA workflow system or how to write workflows.


pkgId: 8258ff8531a131c4ceea4ee88d2a5b1fabc946b64c43a3199a9797e69c212698
name: python-aiida-gaussian-datatypes
arch: src
version: 0.5.1
epoch: 0
release: 1
url: https://github.com/dev-zero/aiida-gaussian-datatypes
rpm_license: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiida-gaussian-datatypes-0.5.1-1.src.rpm
checksum_type: sha256
summary:
  AiiDA data plugin to manage gaussian datatypes (basis sets and pseudopotentials) as first-class citizens

description:
      1  He     SZV-MOLOPT-SR-GTH-q2, SZV-MOLOPT-SR-GTH    SZV, MOLOPT, SR, GTH, q2             2          1
      2  He     DZVP-MOLOPT-SR-GTH-q2, DZVP-MOLOPT-SR-GTH  DZVP, MOLOPT, SR, GTH, q2            2          1
  Which Gaussian Basis Set do you want to add? ('n' for none, 'a' for all, comma-seperated list or range of numbers): 2
  Info: Adding Gaussian Basis Set for: He (DZVP-MOLOPT-SR-GTH-q2)... DONE
  $ verdi data gaussian.basisset list
  Info: 1 Gaussian Basis Sets found:


pkgId: a28725f73400e633466e126072f5080792241e35cc30ff6c0509edde7a31d0cf
name: python-aiida-gromacs
arch: src
version: 2.0.8
epoch: 0
release: 1
summary: A plugin for using GROMACS with AiiDA for molecular dymanics simulations.
url: https://pypi.org/project/aiida-gromacs/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiida-gromacs-2.0.8-1.src.rpm
checksum_type: sha256
description:
  [![Build Status](https://github.com/PSDI-UK/aiida-gromacs/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/PSDI-UK/aiida-gromacs/actions/workflows/ci.yml)
  [![Coverage Status](https://coveralls.io/repos/github/PSDI-UK/aiida-gromacs/badge.svg?branch=master)](https://coveralls.io/github/PSDI-UK/aiida-gromacs?branch=master)
  [![Docs status](https://readthedocs.org/projects/aiida-gromacs/badge)](http://aiida-gromacs.readthedocs.io/)
  [![PyPI version](https://badge.fury.io/py/aiida-gromacs.svg)](https://badge.fury.io/py/aiida-gromacs)



  The GROMACS plugin for AiiDA aims to enable the capture and sharing of the full
  provenance of data when parameterising and running molecular dynamics
  simulations. This plugin is being developed as part of the Physical Sciences
  Data Infrastructure programme to improve the practices around data within the
  Physical Sciences remit area within the UK.

  This package is currently a work in progress and we will be adding much more
  complete functionality to this plugin in the coming months.

  The design pattern we are aiming for is to simply allow researchers to capture
  the full data provenance for their simulations by only switching on an AiiDA
  conda environment, along with modifying your command lines very slightly.

  This means that you should gain access to powerful FAIR data practices without
  wholesale cultural or usage pattern shifts in your daily work.



  See [here](https://aiida-gromacs.readthedocs.io/en/latest/) for documentation for users and developers.



  MIT



  - james.gebbie@stfc.ac.uk
  - jas.kalayan@stfc.ac.uk


pkgId: 01bf463292f7d7f573861c7e57dcb5812974a29abd0ec5083704fed1433b311a
name: python-aiida-kkr
arch: src
version: 2.2.1
epoch: 0
release: 1
summary: AiiDA plugin for the JuKKR codes
url: https://github.com/JuDFTteam/aiida-kkr
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiida-kkr-2.2.1-1.src.rpm
checksum_type: sha256
description:
  [![aiida-core](https://img.shields.io/badge/AiiDA->=v2.0.0,<3.0.0-1f425f.svg?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAACMAAAAhCAYAAABTERJSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAFhgAABYYBG6Yz4AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAUbSURBVFiFzZhrbFRVEMd%2Fc%2B5uu6UUbIFC%2FUAUVEQCLbQJBIiBDyiImJiIhmohYNCkqJAQxASLF8tDgYRHBLXRhIcKNtFEhVDgAxBJqgmVh4JEKg3EIn2QYqBlt917xg%2BFss%2ByaDHOtzsz5z%2B%2FuZl7ztmF%2F5HJvxVQN6cPYX8%2FPLnOmsvNAvqfwuib%2FbNIk9cQeQnLcKRL5xLIV%2Fic9eJeunjPYbRs4FjQSpTB3aS1IpRKeeOOewajy%2FKKEO8Q0DuVdKy8IqsbPulxGHUfCBBu%2BwUYGuFuBTK7wQnht6PEbf4tlRomVRjCbXNjQEB0AyrFQOL5ENIJm7dTLZE6DPJCnEtFZVXDLny%2B4Sjv0PmmYu1ZdUek9RiMgoDmJ8V0L7XJqsZ3UW8YsBOwEeHeeFce7jEYXBy0m9m4BbXqSj2%2Bxnkg26MCVrN6DEZcwggtd8pTFx%2Fh3B9B50YLaFOPwXQKUt0tBLegtSomfBlfY13PwijbEnhztGzgJsK5h9W9qeWwBqjvyhB2iBs1Qz0AU974DciRGO8CVN8AJhAeMAdA3KbrKEtvxhsI%2B9emWiJlGBEU680Cfk%2BSsVqXZvcFYGXjF8ABVJ%2BTNfVXehyms1zzn1gmIOxLEB6E31%2FWBe5rnCarmo7elf7dJEeaLh80GasliI5F6Q9cAz1GY1OJVNDxTzQTw7iY%2FHEZRQY7xqJ9RU2LFe%2FYqakdP911ha0XhjjiTVAkDwgatWfCGeYocx8M3glG8g8EXhSrLrHnEFJ5Ymow%2FkhIYv6ttYUW1iFmEqqxdVoUs9FmsDYSqmtmJh3Cl1%2BVtl2s7owDUdocR5bceiyoSivGTT5vzpbzL1uoBpmcAAQgW7ArnKD9ng9rc%2BNgrobSNwpSkkhcRN%2BvmXLjIsDovYHHEfmsYFygPAnIDEQrQPzJYCOaLHLUfIt7Oq0LJn9fxkSgNCb1qEIQ5UKgT%2Fs6gJmVOOroJhQBXVqw118QtWLdyUxEP45sUpSzqP7RDdFYMyB9UReMiF1MzPwoUqHt8hjGFFeP5wZAbZ%2F0%2BcAtAAcji6LeSq%2FMYiAvSsdw3GtrfVSVFUBbIhwRWYR7yOcr%2FBi%2FB1MSJZ16JlgH1AGM3EO2QnmMyrSbTSiACgFBv4yCUapZkt9qwWVL7aeOyHvArJjm8%2Fz9BhdI4XcZgz2%2FvRALosjsk1ODOyMcJn9%2FYI6IrkS5vxMGdUwou2YKfyVqJpn5t9aNs3gbQMbdbkxnGdsr4bTHm2AxWo9yNZK4PXR3uzhAh%2BM0AZejnCrGdy0UvJxl0oMKgWSLR%2B1LH2aE9ViejiFs%2BXn6bTjng3MlIhJ1I1TkuLdg6OcAbD7Xx%2Bc3y9TrWAiSHqVkbZ2v9ilCo6s4AjwZCzFyD9mOL305nV9aonvsQeT2L0gVk4OwOJqXXVRW7naaxswDKVdlYLyMXAnntteYmws2xcVVZzq%2BtHPAooQggmJkc6TLSusOiL4RKgwzzYU1iFQgiUBA1H7E8yPau%2BZl9P7AblVNebtHqTgxLfRqrNvZWjsHZFuqMqKcDWdlFjF7UGvX8Jn24DyEAykJwNcdg0OvJ4p5pQ9tV6SMlP4A0PNh8aYze1ArROyUNTNouy8tNF3Rt0CSXb6bRFl4%2FIfQzNMjaE9WwpYOWQnOdEF%2BTdJNO0iFh7%2BI0kfORzQZb6P2kymS9oTxzBiM9rUqLWr1WE5G6ODhycQd%2FUnNVeMbcH68hYkGycNoUNWc8fxaxfwhDbHpfwM5oeTY7rUX8QAAAABJRU5ErkJggg%3D%3D)](https://www.aiida.net/)
  [![Documentation Status](https://readthedocs.org/projects/aiida-kkr/badge/?version=latest)](https://aiida-kkr.readthedocs.io/en/latest/?badge=latest)
  [![Build status](https://github.com/JuDFTteam/aiida-kkr/actions/workflows/ci.yml/badge.svg)](https://github.com/JuDFTteam/aiida-kkr/actions)
  [![codecov](https://codecov.io/gh/JuDFTteam/aiida-kkr/branch/develop/graph/badge.svg)](https://codecov.io/gh/JuDFTteam/aiida-kkr)
  [![MIT license](http://img.shields.io/badge/license-MIT-brightgreen.svg)](http://opensource.org/licenses/MIT)
  [![GitHub version](https://badge.fury.io/gh/JuDFTteam%2Faiida-kkr.svg)](https://badge.fury.io/gh/JuDFTteam%2Faiida-kkr)
  [![PyPI version](https://badge.fury.io/py/aiida-kkr.svg)](https://badge.fury.io/py/aiida-kkr)
  [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3628250.svg)](https://doi.org/10.5281/zenodo.3628250)





  [AiiDA](https://aiida.net) plugin for the [Jülich KKR codes](https://jukkr.fz-juelich.de) plus workflows and utility.



  * KKR calculations for bulk and interfaces
  * treatment of alloys using VCA or CPA
  * self-consistency, DOS and bandstructure calculations
  * extraction of magnetic exchange coupling parameters (*J_ij*, *D_ij*)
  * impurity embedding solving the Dyson equation




  If you use this plugin please cite:
  > [Rüßmann, P., Bertoldo, F. & Blügel, S. The AiiDA-KKR plugin and its application to high-throughput impurity embedding into a topological insulator. *npj Comput Mater* **7**, 13 (2021). https://doi.org/10.1038/s41524-020-00482-5](https://doi.org/10.1038/s41524-020-00482-5)

  The ArXiv preprint can be found here:
  > [Philipp Rüßmann, Fabian Bertoldo and Stefan Blügel, *The AiiDA-KKR plugin and its application to high-throughput impurity embedding into a topological insulator*, arXiv:2003.08315 [cond-mat.mtrl-sci] (2020)](https://arxiv.org/abs/2003.08315)




  ```shell
  $ pip install aiida-kkr  # install latest version of aiida-kkr (published on pypi.org)
  $ reentry scan -r aiida  # update entry points, needed in order to find kkr.* entrypoints in aiida


  $ verdi quicksetup  # better to set up a new profile
  $ verdi calculation plugins  # should now show kkr.* entrypoints
  ```

  To install the developer version download the repository and install the downloaded version (see `setup.json` for a list of optional packages that are installed with the extras given in `[]`)

  ```shell
  $ git clone https://github.com/JuDFTteam/aiida-kkr.git
  $ pip install -e aiida-kkr[testing,devtools,docs]
  $ reentry scan -r aiida
  ```



  - The `aiida-kkr` plugin uses the `ase` and `pymatgen` packages for structure conversions.
  - For `aiida-core>=1.5,<1.6` make sure to use the requirements specified in `requirements_aiida-core_1.5.txt` (use `pip install -r requirements_aiida-core_1.5.txt aiida-kkr` for the installation to overwrite the aiida-core dependency).
  - Other extras that can be optionally installed with `aiida-kkr` are
    * `pre-commit` which installes the pre-commit hooks that allow style (`yapf`) and static code checking (`pylint`)
    * `testing` which installs `pytest` and all extension used in the tests
    * `docs` which installs `Sphinx` to build the documentation
    * `devtools` which installs tools that might be helpful during development




  * see http://aiida-kkr.readthedocs.io for user's and developer's guides and API reference
  * check out http://judft.de and https://jukkr.fz-juelich.de for information of the KKR codes used by the plugin



  Thank you for your interest in contributing to aiida-kkr.
  Check out our [contributing guide](CONTRIBUTING.md) for some information.



  To create a new release follow these steps:
  - finish your development and merge it into the `develop` branch
  - update documentation
  - update / fix tests
  - bump version numbers (in files `aiida_kkr/__init__.py`, `pyproject.toml`, `.bumpversion.cfg`)
  - merge changes from `develop` back into `master` and create a tag for the new version number (this triggers publication to pypi)


pkgId: 221ea0343dc712d73340eec240a2a757b4ec362f7de3fb961aecb3dfd077c629
name: python-aiida-nanotech-empa
arch: src
version: 0.7.1
epoch: 0
release: 1
summary: AiiDA plugins and workflows developed at nanotech@surfaces group from Empa.
url: https://github.com/nanotech-empa/aiida-nanotech-empa
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiida-nanotech-empa-0.7.1-1.src.rpm
checksum_type: sha256
description:
  [![Build Status](https://github.com/nanotech-empa/aiida-nanotech-empa/workflows/ci/badge.svg?branch=master)](https://github.com/nanotech-empa/aiida-nanotech-empa/actions)
  [![codecov](https://codecov.io/gh/nanotech-empa/aiida-nanotech-empa/branch/develop/graph/badge.svg?token=52ACMY55UQ)](https://codecov.io/gh/nanotech-empa/aiida-nanotech-empa)
  [![PyPI version](https://badge.fury.io/py/aiida-nanotech-empa.svg)](https://badge.fury.io/py/aiida-nanotech-empa)
  [![DOI](https://zenodo.org/badge/275159349.svg)](https://zenodo.org/badge/latestdoi/275159349)



  AiiDA library containing plugins/workflows developed at nanotech@surfaces group from Empa.

  Contents:

  * `nanotech_empa.nanoribbon`: work chain to characterize 1D periodic systems based on Quantum Espresso.

  * `nanotech_empa.gaussian.spin`: Work chain to characterize spin properties of molecular systems with Gaussian. Calls multiple child work chains. Steps:
    * Wavefunction stability is tested for each spin multiplicity
    * Geometry is relaxed for the different spin states and ground state is found
    * Property calcuation on the ground state: ionization potential and electron affinity with Δ-SCF, natural orbital analysis in case of open-shell singlet
    * Vertical excitation energies for non-ground state multiplicities
    * Orbitals and densities are rendered with PyMOL (needs to be installed separately as a python library, e.g. from [pymol-open-source](https://github.com/schrodinger/pymol-open-source/tree/v2.4.0))



  ```shell
  pip install aiida-nanotech-empa
  ```



  To create a new release, clone the repository, install development dependencies with `pip install '.[dev]'`, and then execute `bumpver update --major/--minor/--patch`.
  This will:

    1. Create a tagged release with bumped version and push it to the repository.
    2. Trigger a GitHub actions workflow that creates a GitHub release.

  Additional notes:

    - Use the `--dry` option to preview the release change.
    - The release tag (e.g. a/b/rc) is determined from the last release.
      Use the `--tag` option to switch the release tag.


pkgId: b170ed291b4ed524e5ea3a5601dc03d90c53398bf11190c021c8353e716a2291
name: python-aiida-nwchem
arch: src
version: 3.0.1
epoch: 0
release: 1
summary: The official AiiDA plugin for NWChem
url: https://pypi.org/project/aiida-nwchem/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiida-nwchem-3.0.1-1.src.rpm
checksum_type: sha256
description:
  AiiDA-NWChem is the AiiDA plugin for the NWChem code.

  The plugin provides support for the following calculation tasks:
  - energy
  - optimize
  - freq

  ...using these theory types:
  - scf
  - dft
  - NWPW Band
  - NWPW PSPW
  - TCE




  The matrix below shows the versions of `aiida-core` and Python with which the plugin is compatible for various plugin version ranges:

  | Plugin | AiiDA | Python |
  |-|-|-|
  | `v3.0 < v4.0` | ![Compatibility for v3.0][AiiDA v2.0] |  [![PyPI pyversions][Python v3.8-v3.10]](https://pypi.org/project/aiida-nwchem/3.0.0/) |
  | `v2.0 < v3.0` | ![Compatibility for v2.0][AiiDA v1.0] |  [![PyPI pyversions][Python v3.6-v3.8]](https://pypi.org/project/aiida-nwchem/2.1.0/) |




  The documentation for this package can be found on Read the Docs at http://aiida-nwchem.readthedocs.io/en/latest/



  This work is supported by the [MARVEL National Centre for Competency in Research](<http://nccr-marvel.ch>) funded by the [Swiss National Science Foundation](<http://www.snf.ch/en>).

  ![MARVEL](docs/source/images/logo_marvel.png)

  [AiiDA v2.0]: https://img.shields.io/badge/AiiDA-~=2.0-007ec6.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAhCAYAAABTERJSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAFhgAABYYBG6Yz4AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAUbSURBVFiFzZhrbFRVEMd%2Fc%2B5uu6UUbIFC%2FUAUVEQCLbQJBIiBDyiImJiIhmohYNCkqJAQxASLF8tDgYRHBLXRhIcKNtFEhVDgAxBJqgmVh4JEKg3EIn2QYqBlt917xg%2BFss%2ByaDHOtzsz5z%2B%2FuZl7ztmF%2F5HJvxVQN6cPYX8%2FPLnOmsvNAvqfwuib%2FbNIk9cQeQnLcKRL5xLIV%2Fic9eJeunjPYbRs4FjQSpTB3aS1IpRKeeOOewajy%2FKKEO8Q0DuVdKy8IqsbPulxGHUfCBBu%2BwUYGuFuBTK7wQnht6PEbf4tlRomVRjCbXNjQEB0AyrFQOL5ENIJm7dTLZE6DPJCnEtFZVXDLny%2B4Sjv0PmmYu1ZdUek9RiMgoDmJ8V0L7XJqsZ3UW8YsBOwEeHeeFce7jEYXBy0m9m4BbXqSj2%2Bxnkg26MCVrN6DEZcwggtd8pTFx%2Fh3B9B50YLaFOPwXQKUt0tBLegtSomfBlfY13PwijbEnhztGzgJsK5h9W9qeWwBqjvyhB2iBs1Qz0AU974DciRGO8CVN8AJhAeMAdA3KbrKEtvxhsI%2B9emWiJlGBEU680Cfk%2BSsVqXZvcFYGXjF8ABVJ%2BTNfVXehyms1zzn1gmIOxLEB6E31%2FWBe5rnCarmo7elf7dJEeaLh80GasliI5F6Q9cAz1GY1OJVNDxTzQTw7iY%2FHEZRQY7xqJ9RU2LFe%2FYqakdP911ha0XhjjiTVAkDwgatWfCGeYocx8M3glG8g8EXhSrLrHnEFJ5Ymow%2FkhIYv6ttYUW1iFmEqqxdVoUs9FmsDYSqmtmJh3Cl1%2BVtl2s7owDUdocR5bceiyoSivGTT5vzpbzL1uoBpmcAAQgW7ArnKD9ng9rc%2BNgrobSNwpSkkhcRN%2BvmXLjIsDovYHHEfmsYFygPAnIDEQrQPzJYCOaLHLUfIt7Oq0LJn9fxkSgNCb1qEIQ5UKgT%2Fs6gJmVOOroJhQBXVqw118QtWLdyUxEP45sUpSzqP7RDdFYMyB9UReMiF1MzPwoUqHt8hjGFFeP5wZAbZ%2F0%2BcAtAAcji6LeSq%2FMYiAvSsdw3GtrfVSVFUBbIhwRWYR7yOcr%2FBi%2FB1MSJZ16JlgH1AGM3EO2QnmMyrSbTSiACgFBv4yCUapZkt9qwWVL7aeOyHvArJjm8%2Fz9BhdI4XcZgz2%2FvRALosjsk1ODOyMcJn9%2FYI6IrkS5vxMGdUwou2YKfyVqJpn5t9aNs3gbQMbdbkxnGdsr4bTHm2AxWo9yNZK4PXR3uzhAh%2BM0AZejnCrGdy0UvJxl0oMKgWSLR%2B1LH2aE9ViejiFs%2BXn6bTjng3MlIhJ1I1TkuLdg6OcAbD7Xx%2Bc3y9TrWAiSHqVkbZ2v9ilCo6s4AjwZCzFyD9mOL305nV9aonvsQeT2L0gVk4OwOJqXXVRW7naaxswDKVdlYLyMXAnntteYmws2xcVVZzq%2BtHPAooQggmJkc6TLSusOiL4RKgwzzYU1iFQgiUBA1H7E8yPau%2BZl9P7AblVNebtHqTgxLfRqrNvZWjsHZFuqMqKcDWdlFjF7UGvX8Jn24DyEAykJwNcdg0OvJ4p5pQ9tV6SMlP4A0PNh8aYze1ArROyUNTNouy8tNF3Rt0CSXb6bRFl4%2FIfQzNMjaE9WwpYOWQnOdEF%2BTdJNO0iFh7%2BI0kfORzQZb6P2kymS9oTxzBiM9rUqLWr1WE5G6ODhycQd%2FUnNVeMbcH68hYkGycNoUNWc8fxaxfwhDbHpfwM5oeTY7rUX8QAAAABJRU5ErkJggg%3D%3D
  [AiiDA v1.0]: https://img.shields.io/badge/AiiDA-~=1.0-007ec6.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAhCAYAAABTERJSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAFhgAABYYBG6Yz4AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAUbSURBVFiFzZhrbFRVEMd%2Fc%2B5uu6UUbIFC%2FUAUVEQCLbQJBIiBDyiImJiIhmohYNCkqJAQxASLF8tDgYRHBLXRhIcKNtFEhVDgAxBJqgmVh4JEKg3EIn2QYqBlt917xg%2BFss%2ByaDHOtzsz5z%2B%2FuZl7ztmF%2F5HJvxVQN6cPYX8%2FPLnOmsvNAvqfwuib%2FbNIk9cQeQnLcKRL5xLIV%2Fic9eJeunjPYbRs4FjQSpTB3aS1IpRKeeOOewajy%2FKKEO8Q0DuVdKy8IqsbPulxGHUfCBBu%2BwUYGuFuBTK7wQnht6PEbf4tlRomVRjCbXNjQEB0AyrFQOL5ENIJm7dTLZE6DPJCnEtFZVXDLny%2B4Sjv0PmmYu1ZdUek9RiMgoDmJ8V0L7XJqsZ3UW8YsBOwEeHeeFce7jEYXBy0m9m4BbXqSj2%2Bxnkg26MCVrN6DEZcwggtd8pTFx%2Fh3B9B50YLaFOPwXQKUt0tBLegtSomfBlfY13PwijbEnhztGzgJsK5h9W9qeWwBqjvyhB2iBs1Qz0AU974DciRGO8CVN8AJhAeMAdA3KbrKEtvxhsI%2B9emWiJlGBEU680Cfk%2BSsVqXZvcFYGXjF8ABVJ%2BTNfVXehyms1zzn1gmIOxLEB6E31%2FWBe5rnCarmo7elf7dJEeaLh80GasliI5F6Q9cAz1GY1OJVNDxTzQTw7iY%2FHEZRQY7xqJ9RU2LFe%2FYqakdP911ha0XhjjiTVAkDwgatWfCGeYocx8M3glG8g8EXhSrLrHnEFJ5Ymow%2FkhIYv6ttYUW1iFmEqqxdVoUs9FmsDYSqmtmJh3Cl1%2BVtl2s7owDUdocR5bceiyoSivGTT5vzpbzL1uoBpmcAAQgW7ArnKD9ng9rc%2BNgrobSNwpSkkhcRN%2BvmXLjIsDovYHHEfmsYFygPAnIDEQrQPzJYCOaLHLUfIt7Oq0LJn9fxkSgNCb1qEIQ5UKgT%2Fs6gJmVOOroJhQBXVqw118QtWLdyUxEP45sUpSzqP7RDdFYMyB9UReMiF1MzPwoUqHt8hjGFFeP5wZAbZ%2F0%2BcAtAAcji6LeSq%2FMYiAvSsdw3GtrfVSVFUBbIhwRWYR7yOcr%2FBi%2FB1MSJZ16JlgH1AGM3EO2QnmMyrSbTSiACgFBv4yCUapZkt9qwWVL7aeOyHvArJjm8%2Fz9BhdI4XcZgz2%2FvRALosjsk1ODOyMcJn9%2FYI6IrkS5vxMGdUwou2YKfyVqJpn5t9aNs3gbQMbdbkxnGdsr4bTHm2AxWo9yNZK4PXR3uzhAh%2BM0AZejnCrGdy0UvJxl0oMKgWSLR%2B1LH2aE9ViejiFs%2BXn6bTjng3MlIhJ1I1TkuLdg6OcAbD7Xx%2Bc3y9TrWAiSHqVkbZ2v9ilCo6s4AjwZCzFyD9mOL305nV9aonvsQeT2L0gVk4OwOJqXXVRW7naaxswDKVdlYLyMXAnntteYmws2xcVVZzq%2BtHPAooQggmJkc6TLSusOiL4RKgwzzYU1iFQgiUBA1H7E8yPau%2BZl9P7AblVNebtHqTgxLfRqrNvZWjsHZFuqMqKcDWdlFjF7UGvX8Jn24DyEAykJwNcdg0OvJ4p5pQ9tV6SMlP4A0PNh8aYze1ArROyUNTNouy8tNF3Rt0CSXb6bRFl4%2FIfQzNMjaE9WwpYOWQnOdEF%2BTdJNO0iFh7%2BI0kfORzQZb6P2kymS9oTxzBiM9rUqLWr1WE5G6ODhycQd%2FUnNVeMbcH68hYkGycNoUNWc8fxaxfwhDbHpfwM5oeTY7rUX8QAAAABJRU5ErkJggg%3D%3D

  [Python v3.8-v3.10]: https://img.shields.io/badge/Python-3.8%20%7C%203.9%20%7C%203.10-blue
  [Python v3.6-v3.8]: https://img.shields.io/badge/Python-3.6%20%7C%203.7%20%7C%203.8-blue


pkgId: 093d8adcf5e2934e0d8c00567988418e04f6b45d3f565d52bc72b3379bfe6065
name: python-aiida-optimize
arch: src
version: 1.0.2
epoch: 0
release: 1
summary: AiiDA Plugin for running optimization algorithms.
url: https://aiida-optimize.readthedocs.io/
rpm_license: Apache 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiida-optimize-1.0.2-1.src.rpm
checksum_type: sha256
description:
  Defines AiiDA workchains that simplify running optimization workflows.

  Documentation: http://aiida-optimize.readthedocs.io

  [![Build Status](https://travis-ci.org/greschd/aiida-optimize.svg?branch=develop)](https://travis-ci.org/greschd/aiida-optimize) [![Documentation Status](https://readthedocs.org/projects/aiida-optimize/badge/?version=latest)](https://aiida-optimize.readthedocs.io/en/latest/?badge=latest)


pkgId: 57c184ab0e8e34a1092dc3f9dae572caf65fed6caf51a2b0edd28068e9e8da15
name: python-aiida-phonopy
arch: src
version: 1.1.4
epoch: 0
release: 1
summary: The official AiiDA plugin for Phonopy
url: https://pypi.org/project/aiida-phonopy/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiida-phonopy-1.1.4-1.src.rpm
checksum_type: sha256
description:
  [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
  [![PyPI version](https://badge.fury.io/py/aiida-phonopy.svg)](https://badge.fury.io/py/aiida-phonopy)
  [![Docs status](https://readthedocs.org/projects/aiida-phonopy/badge)](http://aiida-phonopy.readthedocs.io/)

  This is the official AiiDA plugin for [Phonopy](https://phonopy.github.io/phonopy/index.html).



  From `v0.7.0` this plugin does not support retro-compatibility with previous versions,
  due to a restructure of the package.

  | Plugin | AiiDA | Phonopy |
  |-|-|-|
  | >=`v1.0.0` < v`2.0.0` | >=`v2.0.0` <`v3.0.0` |  >=`v2.14.0` <`v3.0.0` |
  | >=`v0.7.0` < v`1.0.0` | >=`v1.6.0` <`v2.0.0` |  >=`v2.14.0` <`v3.0.0` |



  To install from PyPI, simply execute:

      pip install aiida-phonopy

  or when installing from source:

      git clone https://github.com/aiida-phonopy/aiida-phonopy
      pip install .



  The `aiida-phonopy` plugin package is released under the MIT license.
  See the `LICENSE.txt` file for more details.




  We acknowledge support from:
  * the [U Bremen Excellence Chairs](https://www.uni-bremen.de/u-bremen-excellence-chairs) program funded within the scope of the [Excellence Strategy of Germany’s federal and state governments](https://www.dfg.de/en/research_funding/excellence_strategy/index.html);
  * the [MAPEX](https://www.uni-bremen.de/en/mapex) Center for Materials and Processes.

  <img src="https://raw.githubusercontent.com/aiida-phonopy/aiida-phonopy/main/docs/source/images/UBREMEN.png" width="300px" height="108px"/>
  <img src="https://raw.githubusercontent.com/aiida-phonopy/aiida-phonopy/main/docs/source/images/MAPEX.jpg" width="300px" height="99px"/>


pkgId: 265240a34667eadb8fed279f1942045da0ee4e69da659b685d6796e387c194b3
name: python-aiida-pyscf
arch: src
version: 0.5.1
epoch: 0
release: 1
summary: AiiDA plugin for the Python-based Simulations of Chemistry Framework (PySCF).
url: https://pypi.org/project/aiida-pyscf/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiida-pyscf-0.5.1-1.src.rpm
checksum_type: sha256
description:
  [![PyPI version](https://badge.fury.io/py/aiida-pyscf.svg)](https://badge.fury.io/py/aiida-pyscf)
  [![PyPI pyversions](https://img.shields.io/pypi/pyversions/aiida-pyscf.svg)](https://pypi.python.org/pypi/aiida-pyscf)
  [![CI](https://github.com/microsoft/aiida-pyscf/workflows/ci/badge.svg)](https://github.com/microsoft/aiida-pyscf/actions/workflows/ci.yml)

  An [AiiDA](https://www.aiida.net) plugin for the
  [Python-based Simulations of Chemistry Framework (PySCF)](https://pyscf.org/index.html).

  1. [Installation](#installation)
  1. [Requirements](#requirements)
  1. [Setup](#setup)
  1. [Examples](#examples)
     - [Mean-field calculation](#mean-field-calculation)
     - [Customizing the structure](#customizing-the-structure)
     - [Optimizing geometry](#optimizing-geometry)
     - [Writing Hamiltonian to FCIDUMP files](#writing-hamiltonian-to-fcidump-files)
     - [Writing orbitals to CUBE files](#writing-orbitals-to-cube-files)
     - [Restarting unconverged calculations](#restarting-unconverged-calculations)
     - [Automatic error recovery](#automatic-error-recovery)
     - [Pickled model](#pickled-model)



  The recommended method of installation is through [`pip`](https://pip.pypa.io/en/stable/):

  ```
  pip install aiida-pyscf
  ```



  To use `aiida-pyscf` a configured AiiDA profile is required. Please refer to the
  [documentation of `aiida-core`](https://aiida.readthedocs.io/projects/aiida-core/en/latest/intro/get_started.html) for
  detailed instructions.



  To run a PySCF calculation through AiiDA using the `aiida-pyscf` plugin, the computer needs to be configured where PySCF
  should be run. Please refer to the
  [documentation of `aiida-core`](https://aiida.readthedocs.io/projects/aiida-core/en/latest/howto/run_codes.html#computer-setup)
  for detailed instructions.

  Then the PySCF code needs to be configured. The following YAML configuration file can be taken as a starting point:

  ```yaml
  label: pyscf
  description: PySCF
  computer: localhost
  filepath_executable: python
  default_calc_job_plugin: pyscf.base
  use_double_quotes: false
  with_mpi: false
  prepend_text: ''
  append_text: ''

  ```

  Write the contents to a file named `pyscf.yml`, making sure to update the value of `computer` to the label of the
  computer configured in the previous step. To configure the code, execute:

  ```bash
  verdi code create core.code.installed --config pyscf.yml -n
  ```

  This should now have created the code with the label `pyscf` that will be used in the following examples.





  The default calculation is to perform a mean-field calculation. At a very minimum, the structure and the mean-field
  method should be defined:

  ```python
  from ase.build import molecule
  from aiida.engine import run
  from aiida.orm import Dict, StructureData, load_code

  builder = load_code('pyscf').get_builder()
  builder.structure = StructureData(ase=molecule('H2O'))
  builder.parameters = Dict({'mean_field': {'method': 'RHF'}})
  results, node = run.get_node(builder)
  ```

  This runs a Hartree-Fock calculation on the geometry of a water molecule.

  The main results are stored in the `parameters` output, which by default contain the computed `total_energy` and
  `forces`, details on the molecular orbitals, as well as some timing information:

  ```python
  print(results['parameters'].get_dict())
  {
      'mean_field': {
          'forces': [
              [-6.4898366104394e-16, 3.0329042995656e-15, 2.2269765466236],
              [1.122487932593e-14, 0.64803103141326, -1.1134882733107],
              [-1.0575895664886e-14, -0.64803103141331, -1.1134882733108]
          ],
          'forces_units': 'eV/Å',
          'molecular_orbitals': {
              'labels': [
                  '0 O 1s',
                  '0 O 2s',
                  '0 O 2px',
                  '0 O 2py',
                  '0 O 2pz',
                  '1 H 1s',
                  '2 H 1s'
              ],
              'energies': [
                  -550.86280025028,
                  -34.375426862456,
                  -16.629598134599,
                  -12.323304634736,
                  -10.637428057751,
                  16.200273277782,
                  19.796075801491
              ],
              'occupations': [2.0, 2.0, 2.0, 2.0, 2.0, 0.0, 0.0]
          },
          'total_energy': -2039.8853743664,
          'total_energy_units': 'eV',
      },
      'timings': {
          'total': 1.3238215579768, 'mean_field': 0.47364449803717
      },
  }
  ```



  The geometry of the structure is fully defined through the `structure` input, which is provided by a `StructureData`
  node. Any other properties, e.g., the charge and what basis set to use, can be specified through the `structure`
  dictionary in the `parameters` input:

  ```python
  from ase.build import molecule
  from aiida.engine import run
  from aiida.orm import Dict, StructureData, load_code

  builder = load_code('pyscf').get_builder()
  builder.structure = StructureData(ase=molecule('H2O'))
  builder.parameters = Dict({
      'mean_field': {'method': 'RHF'},
      'structure': {
          'basis ': 'sto-3g',
          'charge': 0,
      }
  })
  results, node = run.get_node(builder)
  ```

  Any attribute of the [`pyscf.gto.Mole` class](https://pyscf.org/user/gto.html) which is used to define the structure can
  be set through the `structure` dictionary, with the exception of the `atom` and `unit` attributes, which are set
  automatically by the plugin based on the `StructureData` input.



  The geometry can be optimized by specifying the `optimizer` dictionary in the input `parameters`. The `solver` has to be
  specified, and currently the solvers `geometric` and `berny` are supported. The `convergence_parameters` accepts the
  parameters for the selected solver (see
  [PySCF documentation](https://pyscf.org/user/geomopt.html?highlight=geometry+optimization) for details):

  ```python
  from ase.build import molecule
  from aiida.engine import run
  from aiida.orm import Dict, StructureData, load_code

  builder = load_code('pyscf').get_builder()
  builder.structure = StructureData(ase=molecule('H2O'))
  builder.parameters = Dict({
      'mean_field': {'method': 'RHF'},
      'optimizer': {
          'solver': 'geometric',
          'convergence_parameters': {
              'convergence_energy': 1e-6,  # Eh
              'convergence_grms': 3e-4,    # Eh/Bohr
              'convergence_gmax': 4.5e-4,  # Eh/Bohr
              'convergence_drms': 1.2e-3,  # Angstrom
              'convergence_dmax': 1.8e-3,  # Angstrom
          }
      }
  })
  results, node = run.get_node(builder)
  ```

  The optimized structure is returned in the form of a `StructureData` under the `structure` output label. The structure
  and energy of each frame in the geometry optimization trajectory, are stored in the form of a `TrajectoryData` under the
  `trajectory` output label. The total energies can be retrieved as follows:

  ```python
  results['trajectory'].get_array('energies')
  ```



  To compute localized orbitals, specify the desired method in the `parameters.localize_orbitals.method` input:

  ```python
  from ase.build import molecule
  from aiida.engine import run
  from aiida.orm import Dict, StructureData, load_code

  builder = load_code('pyscf').get_builder()
  builder.structure = StructureData(ase=molecule('H2O'))
  builder.parameters = Dict({
      'mean_field': {'method': 'RHF'},
      'localize_orbitals': {'method': 'ibo'}
  })
  results, node = run.get_node(builder)
  ```

  The following methods are supported: `boys`, `cholesky`, `edmiston`, `iao`, `ibo`, `lowdin`, `nao`, `orth`, `pipek`,
  `vvo`. For more information, please refer to the [PySCF documentation](https://pyscf.org/user/lo.html).



  In order to compute the Hessian, specify an empty dictionary for the `hessian` key in the `parameters` input:

  ```python
  from ase.build import molecule
  from aiida.engine import run
  from aiida.orm import Dict, StructureData, load_code

  builder = load_code('pyscf').get_builder()
  builder.structure = StructureData(ase=molecule('H2O'))
  builder.parameters = Dict({
      'mean_field': {'method': 'RHF'},
      'hessian': {}
  })
  results, node = run.get_node(builder)
  ```

  The computed Hessian will be attached as an `ArrayData` node with the link label `hessian`. Use
  `node.outputs.hessian.get_array('hessian')` to retrieve the computed Hessian as a numpy array for further processing.



  To instruct the calculation to dump a representation of the Hamiltonian to FCIDUMP files, add the `fcidump` dictionary
  to the `parameters` input:

  ```python
  from ase.build import molecule
  from aiida.engine import run
  from aiida.orm import Dict, StructureData, load_code

  builder = load_code('pyscf').get_builder()
  builder.structure = StructureData(ase=molecule('N2'))
  builder.parameters = Dict({
      'mean_field': {'method': 'RHF'},
      'fcidump': {
          'active_spaces': [[5, 6, 8, 9]],
          'occupations': [[1, 1, 1, 1]]
      }
  })
  results, node = run.get_node(builder)
  ```

  The `active_spaces` and `occupations` keys are requires and each take a list of list of integers. For each element in
  the list, a FCIDUMP file is generated for the corresponding active spaces and the occupations of the orbitals. The shape
  of the `active_spaces` and `occupations` array has to be identical.

  The generated FCIDUMP files are attached as `SinglefileData` output nodes in the `fcidump` namespace, where the label is
  determined by the index of the corresponding active space in the list:

  ```python
  print(results['fcidump']['active_space_0'].get_content())
   &FCI NORB=   4,NELEC= 4,MS2=0,
    ORBSYM=1,1,1,1,
    ISYM=1,
   &END
    0.5832127121682998       1    1    1    1
    0.5359642500498074       1    1    2    2
   -2.942091015256668e-15    1    1    3    2
    0.5381290185905914       1    1    3    3
   -3.782672959584676e-15    1    1    4    1
    ...
  ```



  The `pyscf.tools.cubegen` module provides functions to compute various properties of the system and write them as CUBE
  files. The `PyscfCalculation` plugin currently supports computing the following:

  - molecular orbitals
  - charge density
  - molecular electrostatic potential

  To instruct the calculation to dump a representation of any of these quantities to CUBE files, add the `cubegen`
  dictionary to the `parameters` input:

  ```python
  from ase.build import molecule
  from aiida.engine import run
  from aiida.orm import Dict, StructureData, load_code

  builder = load_code('pyscf').get_builder()
  builder.structure = StructureData(ase=molecule('N2'))
  builder.parameters = Dict({
      'mean_field': {'method': 'RHF'},
      'cubegen': {
          'orbitals: {
              'indices': [5, 6],
              'parameters': {
                  'nx': 40,
                  'ny': 40,
                  'nz': 40,
              }
          },
          'density': {
              'parameters': {
                  'resolution': 300,
              }
          },
          'mep': {
              'parameters': {
                  'resolution': 300,
              }
          }
      }
  })
  results, node = run.get_node(builder)
  ```

  The `indices` key has to be specified for the `orbitals` subdictionary and takes a list of integers, indicating the
  indices of the molecular orbitals that should be written to file. Additional parameters can be provided in the
  `parameters` subdictionary (see the
  [PySCF documentation](https://pyscf.org/pyscf_api_docs/pyscf.tools.html?highlight=fcidump#module-pyscf.tools.cubegen)
  for details). The `parameters` subdictionaries for the `density` and `mep` dictionaries are optional. To compute the
  charge density and molecular electrostatic potential, the and empty dictionary for the `density` and `mep` keys,
  respectively, is sufficient.

  The generated CUBE files are attached as `SinglefileData` output nodes in the `cubegen` namespace, with the `orbitals`,
  `density` and `mep` subnamespaces. For the `orbitals` subnamespace, the label is determined by the corresponding
  molecular orbital index:

  ```python
  print(results['cubegen']['orbitals']['mo_5'].get_content())
  Orbital value in real space (1/Bohr^3)
  PySCF Version: 2.1.1  Date: Sun Apr  2 15:59:19 2023
      2   -3.000000   -3.000000   -4.067676
     40    0.153846    0.000000    0.000000
     40    0.000000    0.153846    0.000000
     40    0.000000    0.000000    0.208599
      7    0.000000    0.000000    0.000000    1.067676
      7    0.000000    0.000000    0.000000   -1.067676
   -1.10860E-04 -1.56874E-04 -2.16660E-04 -2.92099E-04 -3.84499E-04 -4.94299E-04
   -6.20809E-04 -7.62048E-04 -9.14724E-04 -1.07439E-03 -1.23579E-03 -1.39331E-03
    ...
  ```

  > **Warning** PySCF is known to fail when computing the MEP with DHF, DKS, GHF and GKS references.



  The plugin will automatically instruct PySCF to write a checkpoint file. If the calculation did not converge, it will
  finish with exit status `410` and the checkpoint file is attached as a `SinglefileData` as the `checkpoint` output node.
  This node can then be passed as input to a new calculation to restart from the checkpoint:

  ```python
  failed_calculation = load_node(IDENTIFIER)
  builder = failed_calculation.get_builder_restart()
  builder.checkpoint = failed_calculation.outputs.checkpoint
  submit(builder)
  ```

  The plugin will write the checkpoint file of the failed calculation to the working directory such that PySCF can start
  of from there.



  The `PyscfCalculation` plugin does not support all PySCF functionality; it aims to support most functionality that is
  computationally intensive, as in this case it is important to be able to offload these calculations as a calcjob on a
  remote compute resource. Most post-processing utilities are computationally inexpensive, and since the API is in Python,
  they can be called directly in AiiDA workflows as `calcfunction`s. Many PySCF utilities require the _model_ of the
  system as an argument, where model is the main object used in PySCF, i.e. the object assigned to the `mean_field`
  variable in the following:

  ```python
  from pyscf import scf
  mean_field = scf.RHF(..)
  mean_field.kernel()
  ```

  The `kernel` method is often computationally expensive, but its results (stored on the model object) are lost when the
  `PyscfCalculation` finishes as the Python interpreter of the calcjob shuts down and so the `mean_field` object no longer
  exists. This would force post-processing code to reconstruct the model from scratch and rerun the expensive kernel.
  Therefore, the `PyscfCalculation` serializes the PySCF model that was computed and stores it as a `PickledData` output
  node with the link label `model` in the provenance graph. This allows recreating the model in another Python interpreter
  and have it ready to be used for post-processing:

  ```python
  from pyscf.hessian import thermo
  node = load_node()  # Load the completed `PyscfCalculation`
  mean_field = node.outputs.model.load()  # Reconstruct the model by calling the `load()` method
  hessian = mean_field.Hessian().kernel()
  freq_info = thermo.harmonic_analysis(mean_field.mol, hessian)
  ```



  There are a variety of reasons why a PySCF calculation may not finish with the intended result. Examples are the
  self-consistent field cycle not converging or the job getting killed by the scheduler because it ran out of the
  requested walltime. The `PyscfBaseWorkChain` is designed to try and automatically recover from these kinds of errors
  whenever it can potentially be handled. It is a simple wrapper around the `PyscfCalculation` plugin that automatically
  restarts a new `PyscfCalculation` if the previous iterations failed. Launching a `PyscfBaseWorkChain` is almost
  identical to launching a `PyscfCalculation` directly; the inputs just have to be "nested" inside the `pyscf` namespace:

  ```python
  from aiida.engine import run
  from aiida.orm import Dict, StructureData, load_code, load_node
  from aiida_pyscf.workflows.base import PyscfBaseWorkChain
  from ase.build import molecule

  builder = PyscfBaseWorkChain.get_builder()
  builder.pyscf.code = load_code('pyscf')
  builder.pyscf.structure = StructureData(ase=molecule('H2O'))
  builder.pyscf.parameters = Dict({
      'mean_field': {
          'method': 'RHF',
          'max_cycle': 3,
      }
  })
  results, node = run.get_node(builder)
  ```

  In this example, we purposefully set the maximum number of iterations in the self-consistent field cycle to 3
  (`'mean_field.max_cycle' = 3`), which will cause the first iteration to fail to reach convergence. The
  `PyscfBaseWorkChain` detects the error, indicated by exit status `410` on the `PyscfCalculation`, and automatically
  restarts the calculation from the saved checkpoint. After three iterations, the calculation converges:

  ```console
  $ verdi process status IDENTIFIER
  PyscfBaseWorkChain<30126> Finished [0] [2:results]
      ├── PyscfCalculation<30127> Finished [410]
      ├── PyscfCalculation<30132> Finished [410]
      └── PyscfCalculation<30137> Finished [0]
  ```

  The following error modes are currently handled by the `PyscfBaseWorkChain`:

  - `120`: Out of walltime: The calculation will be restarted from the last checkpoint if available, otherwise the work
    chain is aborted
  - `140`: Node failure: The calculation will be restarted from the last checkpoint
  - `410`: Electronic convergence not achieved: The calculation will be restarted from the last checkpoint
  - `500`: Ionic convergence not achieved: The geometry optmizization did not converge, calculation will be restarted from
    the last checkpoint and structure



  The main objective of a `PyscfCalculation` is to solve the mean-field problem for a given structure. The results of
  this, often computationally expensive, step are stored in the `mean_field_run` variable in the main script:

  ```python
  mean_field = scf.RHF(structure)
  density_matrix = mean_field.from_chk('restart.chk')
  mean_field_run = mean_field.run(density_matrix)
  ```

  The `mean_field_run` object can be used for a number of further post-processing operations implemented in PySCF. To keep
  the `PyscfCalculation` interface simple, not all of this functionality is supported. However, as soon as the calculation
  job finishes, the `mean_field_run` variable is lost and can no longer be accessed to be used for further processing.

  As a workaround, the `PyscfCalculation` will ["pickle"](https://docs.python.org/3/library/pickle.html) the
  `mean_field_run` object and attach it as the `model` output to the calculation. The `model` output node can be
  "unpickled" to restore the original `mean_field_run` object such that it can be used for further processing:

  ```python
  from aiida.engine import run
  inputs = {}
  results, node = run.get_node(PyscfCalculation, **inputs)
  mean_field = node.outputs.model.load()
  print(mean_field.e_tot)
  ```

  > **Warning** For certain cases, the calculation may fail to pickle the model and will except. In this case, one can set
  > the `pickle_model` input to the `PyscfCalculation` to `False`.



  This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License
  Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For
  details, visit https://cla.opensource.microsoft.com.

  When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate
  the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only
  need to do this once across all repos using our CLA.

  This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
  For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact
  [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.



  This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks
  or logos is subject to and must follow
  [Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general).
  Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft
  sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.


pkgId: 39cd1e46d05e359e994ac758f9f67814925effb504766dfee2d6b67478a252a0
name: python-aiida-pythonjob
arch: src
version: 0.1.0
epoch: 0
release: 1
summary: Run Python functions on a remote computer.
url: https://pypi.org/project/aiida-pythonjob/
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiida-pythonjob-0.1.0-1.src.rpm
checksum_type: sha256
description:
  [![PyPI version](https://badge.fury.io/py/aiida-pythonjob.svg)](https://badge.fury.io/py/aiida-pythonjob)
  [![Unit test](https://github.com/aiidateam/aiida-pythonjob/actions/workflows/ci.yml/badge.svg)](https://github.com/aiidateam/aiida-pythonjob/actions/workflows/ci.yml)
  [![codecov](https://codecov.io/gh/aiidateam/aiida-pythonjob/branch/main/graph/badge.svg)](https://codecov.io/gh/aiidateam/aiida-pythonjob)
  [![Docs status](https://readthedocs.org/projects/aiida-pythonjob/badge)](http://aiida-pythonjob.readthedocs.io/)

  Efficiently design and manage flexible workflows with AiiDA, featuring an interactive GUI, checkpoints, provenance tracking, error-resistant, and remote execution capabilities.





  ```console
      pip install aiida-pythonjob
  ```

  To install the latest version from source, first clone the repository and then install using `pip`:

  ```console
  git clone https://github.com/aiidateam/aiida-pythonjob
  cd aiida-pythonjob
  pip install -e .
  ```



  Explore the comprehensive [documentation](https://aiida-pythonjob.readthedocs.io/en/latest/) to discover all the features and capabilities of AiiDA Workgraph.



  [MIT](http://opensource.org/licenses/MIT)

rpm_license:
  MIT License  Copyright (c) 2024 AiiDA team  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


pkgId: 823e84c2df25ceeb8f2e25313d5f14240db50bcb974906dc76b2dca004d2828b
name: python-aiida-pythonjob
arch: src
version: 0.1.4
epoch: 0
release: 1
summary: Run Python functions on a remote computer.
url: https://pypi.org/project/aiida-pythonjob/
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiida-pythonjob-0.1.4-1.src.rpm
checksum_type: sha256
description:
  [![PyPI version](https://badge.fury.io/py/aiida-pythonjob.svg)](https://badge.fury.io/py/aiida-pythonjob)
  [![Unit test](https://github.com/aiidateam/aiida-pythonjob/actions/workflows/ci.yml/badge.svg)](https://github.com/aiidateam/aiida-pythonjob/actions/workflows/ci.yml)
  [![codecov](https://codecov.io/gh/aiidateam/aiida-pythonjob/branch/main/graph/badge.svg)](https://codecov.io/gh/aiidateam/aiida-pythonjob)
  [![Docs status](https://readthedocs.org/projects/aiida-pythonjob/badge)](http://aiida-pythonjob.readthedocs.io/)

  `PythonJob` allows users to run Python functions on a remote computer. It is designed to enable users from non-AiiDA communities to run their Python functions remotely and construct workflows with checkpoints, maintaining all data provenance. For instance, users can use ASE's calculator to run a DFT calculation on a remote computer directly.



  1. **Remote Execution**: Seamlessly run Python functions on a remote computer.
  2. **User-Friendly**: Designed for users who are not familiar with AiiDA, simplifying the process of remote execution.
  3. **Workflow Management**: Construct workflows using WorkGraph with checkpoints, ensuring that intermediate states and results are preserved.
  4. **Data Provenance**: Maintain comprehensive data provenance, tracking the full history and transformations of data.





  ```console
      pip install aiida-pythonjob
  ```

  To install the latest version from source, first clone the repository and then install using `pip`:

  ```console
  git clone https://github.com/aiidateam/aiida-pythonjob
  cd aiida-pythonjob
  pip install -e .
  ```



  Explore the comprehensive [documentation](https://aiida-pythonjob.readthedocs.io/en/latest/) to discover all the features and capabilities of AiiDA Workgraph.



  [MIT](http://opensource.org/licenses/MIT)

rpm_license:
  MIT License  Copyright (c) 2024 AiiDA team  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


pkgId: b6db93b5f4b189df8787bec7dff25c7ac3484e30cf1dd8a69af66aaa97769cb4
name: python-aiida-quantumespresso
arch: src
version: 4.6.0
epoch: 0
release: 1
summary: The official AiiDA plugin for Quantum ESPRESSO
url: https://pypi.org/project/aiida-quantumespresso/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiida-quantumespresso-4.6.0-1.src.rpm
checksum_type: sha256
description:
  [![PyPI version](https://badge.fury.io/py/aiida-quantumespresso.svg)](https://badge.fury.io/py/aiida-quantumespresso)
  [![PyPI pyversions](https://img.shields.io/pypi/pyversions/aiida-quantumespresso.svg)](https://pypi.python.org/pypi/aiida-quantumespresso)
  [![Build Status](https://github.com/aiidateam/aiida-quantumespresso/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/aiidateam/aiida-quantumespresso/actions)
  [![Docs status](https://readthedocs.org/projects/aiida-quantumespresso/badge)](http://aiida-quantumespresso.readthedocs.io/)

  This is the official AiiDA plugin for [Quantum ESPRESSO](https://www.quantum-espresso.org/).



  The matrix below assumes the user always install the latest patch release of the specified minor version, which is recommended.

  | Plugin | AiiDA | Python | Quantum ESPRESSO |
  |-|-|-|-|
  | `v4.3 < v5.0` | ![Compatibility for v4.0][AiiDA v4.0] |  [![PyPI pyversions](https://img.shields.io/pypi/pyversions/aiida-quantumespresso.svg)](https://pypi.org/project/aiida-quantumespresso) | ![Quantum ESPRESSO compatibility][QE v6.6-7.3] |
  | `v4.0 < v4.3` | ![Compatibility for v4.0][AiiDA v4.0] |  [![PyPI pyversions](https://img.shields.io/pypi/pyversions/aiida-quantumespresso.svg)](https://pypi.org/project/aiida-quantumespresso) | ![Quantum ESPRESSO compatibility][QE v6.6-7.1] |
  | `v3.5 < v4.0` | ![Compatibility for v3.5][AiiDA v3.5] |  [![PyPI pyversions][Python v3.6-v3.9]](https://pypi.org/project/aiida-quantumespresso/3.5.2/) | ![Quantum ESPRESSO compatibility][QE v6-7] |
  | `v3.4 < v3.5` | ![Compatibility for v3.4][AiiDA v3.4] |  [![PyPI pyversions][Python v3.6-v3.9]](https://pypi.org/project/aiida-quantumespresso/3.4.2/) | ![Quantum ESPRESSO compatibility][QE v6] |
  | `v3.3 < v3.4` | ![Compatibility for v3.3][AiiDA v3.3] |  [![PyPI pyversions][Python v3.6-v3.8]](https://pypi.org/project/aiida-quantumespresso/3.3.1/) | ![Quantum ESPRESSO compatibility][QE v6] |
  | `v3.1 < v3.3` | ![Compatibility for v3.1][AiiDA v3.1] |  [![PyPI pyversions][Python v3.5-v3.8]](https://pypi.org/project/aiida-quantumespresso/3.2.1/) | ![Quantum ESPRESSO compatibility][QE v6] |
  | `v3.0 < v3.1` | ![Compatibility for v3.0][AiiDA v3.0] |  [![PyPI pyversions][Python v2.7-v3.8]](https://pypi.org/project/aiida-quantumespresso/3.0.0/) | ![Quantum ESPRESSO compatibility][QE v6] |
  | `v2.0 < v3.0` | ![Compatibility for v2.0][AiiDA v2.0] |  [![PyPI pyversions][Python v2.7-v3.8]](https://pypi.org/project/aiida-quantumespresso/2.1.0/) | ![Quantum ESPRESSO compatibility][QE v6] |

  Starting from `aiida-quantumespresso==4.0`, the last three minor versions of Quantum ESPRESSO are supported.
  Older versions are supported up to a maximum of two years.


  To install from PyPI, simply execute:

      pip install aiida-quantumespresso

  or when installing from source:

      git clone https://github.com/aiidateam/aiida-quantumespresso
      pip install aiida-quantumespresso


  The plugin comes with a builtin CLI tool: `aiida-quantumespresso`.
  This tool is built using the `click` library and supports tab-completion.
  To enable it, add the following to your shell loading script, e.g. the `.bashrc` or virtual environment activate script:

      eval "$(_AIIDA_QUANTUMESPRESSO_COMPLETE=source aiida-quantumespresso)"

  The tool comes with various sub commands, for example to quickly launch some calculations and workchains
  For example, to launch a test `PwCalculation` you can run the following command:

      aiida-quantumespresso calculation launch pw -X pw-v6.1 -F SSSP/1.1/PBE/efficiency

  Note that this requires the code `pw-v6.1` and pseudopotential family `SSSP/1.1/PBE/efficiency` to be configured.
  See the pseudopotentials section on how to install them easily.
  Each command has a fully documented command line interface, which can be printed to screen with the help flag:

      aiida-quantumespresso calculation launch ph --help

  which should print something like the following:

      Usage: aiida-quantumespresso calculation launch ph [OPTIONS]

        Run a PhCalculation.

      Options:
        -X, --code CODE                 A single code identified by its ID, UUID or
                                        label.  [required]
        -C, --calculation CALCULATION   A single calculation identified by its ID or
                                        UUID.  [required]
        -k, --kpoints-mesh INTEGER...   The number of points in the kpoint mesh
                                        along each basis vector.  [default: 1, 1, 1]
        -m, --max-num-machines INTEGER  The maximum number of machines (nodes) to
                                        use for the calculations.  [default: 1]
        -w, --max-wallclock-seconds INTEGER
                                        the maximum wallclock time in seconds to set
                                        for the calculations.  [default: 1800]
        -i, --with-mpi                  Run the calculations with MPI enabled.
                                        [default: False]
        -d, --daemon                    Submit the process to the daemon instead of
                                        running it locally.  [default: False]
        -h, --help                      Show this message and exit.


  Pseudopotentials are installed and managed through the [`aiida-pseudo` plugin](https://pypi.org/project/aiida-pseudo/).
  The easiest way to install pseudopotentials, is to install a version of the [SSSP](https://www.materialscloud.org/discover/sssp/table/efficiency) through the CLI of `aiida-pseudo`.
  Simply run

      aiida-pseudo install sssp

  to install the default SSSP version.
  List the installed pseudopotential families with the command `aiida-pseudo list`.
  You can then use the name of any family in the command line using the `-F` flag.




  To run the tests, simply clone and install the package locally with the [tests] optional dependencies:

  ```shell
  git clone https://github.com/aiidateam/aiida-quantumespresso .
  cd aiida-quantumespresso
  pip install -e .[tests]  # install extra dependencies for test
  pytest # run tests
  ```

  You can also use `tox` to run the test set. Here you can also use the `-e` option to specify the Python version for the test run:
  ```shell
  pip install tox
  tox -e py39 -- tests/calculations/test_pw.py
  ```


  To contribute to this repository, please enable pre-commit so the code in commits are conform to the standards.
  Simply install the repository with the `pre-commit` extra dependencies:
  ```shell
  cd aiida-quantumespresso
  pip install -e .[pre-commit]
  pre-commit install
  ```


  The `aiida-quantumespresso` plugin package is released under the MIT license.
  See the `LICENSE.txt` file for more details.


  We acknowledge support from:
  * the [NCCR MARVEL](http://nccr-marvel.ch/) funded by the Swiss National Science Foundation;
  * the EU Centre of Excellence "[MaX – Materials Design at the Exascale](http://www.max-centre.eu/)" (Horizon 2020 EINFRA-5, Grant No. 676598; H2020-INFRAEDI-2018-1, Grant No. 824143; HORIZON-EUROHPC-JU-2021-COE-1, Grant No. 101093374);
  * the European Union's Horizon 2020 research and innovation programme (Grant No. 957189, [project BIG-MAP](https://www.big-map.eu), also part of the [BATTERY 2030+ initiative](https://battery2030.eu), Grant No. 957213);
  * the [swissuniversities P-5 project "Materials Cloud"](https://www.materialscloud.org/swissuniversities).

  <img src="https://raw.githubusercontent.com/aiidateam/aiida-quantumespresso/develop/docs/source/images/MARVEL.png" width="250px" height="131px"/>
  <img src="https://raw.githubusercontent.com/aiidateam/aiida-quantumespresso/develop/docs/source/images/MaX.png" width="300px" height="84px"/>
  <img src="https://raw.githubusercontent.com/aiidateam/aiida-quantumespresso/develop/docs/source/images/BIG-MAP_logo.png" width="77px" height="107px"/>
  <img src="https://raw.githubusercontent.com/aiidateam/aiida-quantumespresso/develop/docs/source/images/swissuniversities.png" width="300px" height="35px"/>

  [AiiDA v4.0]: https://img.shields.io/badge/AiiDA->=2.0.0,<3.0.0-007ec6.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAhCAYAAABTERJSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAFhgAABYYBG6Yz4AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAUbSURBVFiFzZhrbFRVEMd%2Fc%2B5uu6UUbIFC%2FUAUVEQCLbQJBIiBDyiImJiIhmohYNCkqJAQxASLF8tDgYRHBLXRhIcKNtFEhVDgAxBJqgmVh4JEKg3EIn2QYqBlt917xg%2BFss%2ByaDHOtzsz5z%2B%2FuZl7ztmF%2F5HJvxVQN6cPYX8%2FPLnOmsvNAvqfwuib%2FbNIk9cQeQnLcKRL5xLIV%2Fic9eJeunjPYbRs4FjQSpTB3aS1IpRKeeOOewajy%2FKKEO8Q0DuVdKy8IqsbPulxGHUfCBBu%2BwUYGuFuBTK7wQnht6PEbf4tlRomVRjCbXNjQEB0AyrFQOL5ENIJm7dTLZE6DPJCnEtFZVXDLny%2B4Sjv0PmmYu1ZdUek9RiMgoDmJ8V0L7XJqsZ3UW8YsBOwEeHeeFce7jEYXBy0m9m4BbXqSj2%2Bxnkg26MCVrN6DEZcwggtd8pTFx%2Fh3B9B50YLaFOPwXQKUt0tBLegtSomfBlfY13PwijbEnhztGzgJsK5h9W9qeWwBqjvyhB2iBs1Qz0AU974DciRGO8CVN8AJhAeMAdA3KbrKEtvxhsI%2B9emWiJlGBEU680Cfk%2BSsVqXZvcFYGXjF8ABVJ%2BTNfVXehyms1zzn1gmIOxLEB6E31%2FWBe5rnCarmo7elf7dJEeaLh80GasliI5F6Q9cAz1GY1OJVNDxTzQTw7iY%2FHEZRQY7xqJ9RU2LFe%2FYqakdP911ha0XhjjiTVAkDwgatWfCGeYocx8M3glG8g8EXhSrLrHnEFJ5Ymow%2FkhIYv6ttYUW1iFmEqqxdVoUs9FmsDYSqmtmJh3Cl1%2BVtl2s7owDUdocR5bceiyoSivGTT5vzpbzL1uoBpmcAAQgW7ArnKD9ng9rc%2BNgrobSNwpSkkhcRN%2BvmXLjIsDovYHHEfmsYFygPAnIDEQrQPzJYCOaLHLUfIt7Oq0LJn9fxkSgNCb1qEIQ5UKgT%2Fs6gJmVOOroJhQBXVqw118QtWLdyUxEP45sUpSzqP7RDdFYMyB9UReMiF1MzPwoUqHt8hjGFFeP5wZAbZ%2F0%2BcAtAAcji6LeSq%2FMYiAvSsdw3GtrfVSVFUBbIhwRWYR7yOcr%2FBi%2FB1MSJZ16JlgH1AGM3EO2QnmMyrSbTSiACgFBv4yCUapZkt9qwWVL7aeOyHvArJjm8%2Fz9BhdI4XcZgz2%2FvRALosjsk1ODOyMcJn9%2FYI6IrkS5vxMGdUwou2YKfyVqJpn5t9aNs3gbQMbdbkxnGdsr4bTHm2AxWo9yNZK4PXR3uzhAh%2BM0AZejnCrGdy0UvJxl0oMKgWSLR%2B1LH2aE9ViejiFs%2BXn6bTjng3MlIhJ1I1TkuLdg6OcAbD7Xx%2Bc3y9TrWAiSHqVkbZ2v9ilCo6s4AjwZCzFyD9mOL305nV9aonvsQeT2L0gVk4OwOJqXXVRW7naaxswDKVdlYLyMXAnntteYmws2xcVVZzq%2BtHPAooQggmJkc6TLSusOiL4RKgwzzYU1iFQgiUBA1H7E8yPau%2BZl9P7AblVNebtHqTgxLfRqrNvZWjsHZFuqMqKcDWdlFjF7UGvX8Jn24DyEAykJwNcdg0OvJ4p5pQ9tV6SMlP4A0PNh8aYze1ArROyUNTNouy8tNF3Rt0CSXb6bRFl4%2FIfQzNMjaE9WwpYOWQnOdEF%2BTdJNO0iFh7%2BI0kfORzQZb6P2kymS9oTxzBiM9rUqLWr1WE5G6ODhycQd%2FUnNVeMbcH68hYkGycNoUNWc8fxaxfwhDbHpfwM5oeTY7rUX8QAAAABJRU5ErkJggg%3D%3D
  [AiiDA v3.5]: https://img.shields.io/badge/AiiDA->=1.4.4,<2.0.0-007ec6.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAhCAYAAABTERJSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAFhgAABYYBG6Yz4AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAUbSURBVFiFzZhrbFRVEMd%2Fc%2B5uu6UUbIFC%2FUAUVEQCLbQJBIiBDyiImJiIhmohYNCkqJAQxASLF8tDgYRHBLXRhIcKNtFEhVDgAxBJqgmVh4JEKg3EIn2QYqBlt917xg%2BFss%2ByaDHOtzsz5z%2B%2FuZl7ztmF%2F5HJvxVQN6cPYX8%2FPLnOmsvNAvqfwuib%2FbNIk9cQeQnLcKRL5xLIV%2Fic9eJeunjPYbRs4FjQSpTB3aS1IpRKeeOOewajy%2FKKEO8Q0DuVdKy8IqsbPulxGHUfCBBu%2BwUYGuFuBTK7wQnht6PEbf4tlRomVRjCbXNjQEB0AyrFQOL5ENIJm7dTLZE6DPJCnEtFZVXDLny%2B4Sjv0PmmYu1ZdUek9RiMgoDmJ8V0L7XJqsZ3UW8YsBOwEeHeeFce7jEYXBy0m9m4BbXqSj2%2Bxnkg26MCVrN6DEZcwggtd8pTFx%2Fh3B9B50YLaFOPwXQKUt0tBLegtSomfBlfY13PwijbEnhztGzgJsK5h9W9qeWwBqjvyhB2iBs1Qz0AU974DciRGO8CVN8AJhAeMAdA3KbrKEtvxhsI%2B9emWiJlGBEU680Cfk%2BSsVqXZvcFYGXjF8ABVJ%2BTNfVXehyms1zzn1gmIOxLEB6E31%2FWBe5rnCarmo7elf7dJEeaLh80GasliI5F6Q9cAz1GY1OJVNDxTzQTw7iY%2FHEZRQY7xqJ9RU2LFe%2FYqakdP911ha0XhjjiTVAkDwgatWfCGeYocx8M3glG8g8EXhSrLrHnEFJ5Ymow%2FkhIYv6ttYUW1iFmEqqxdVoUs9FmsDYSqmtmJh3Cl1%2BVtl2s7owDUdocR5bceiyoSivGTT5vzpbzL1uoBpmcAAQgW7ArnKD9ng9rc%2BNgrobSNwpSkkhcRN%2BvmXLjIsDovYHHEfmsYFygPAnIDEQrQPzJYCOaLHLUfIt7Oq0LJn9fxkSgNCb1qEIQ5UKgT%2Fs6gJmVOOroJhQBXVqw118QtWLdyUxEP45sUpSzqP7RDdFYMyB9UReMiF1MzPwoUqHt8hjGFFeP5wZAbZ%2F0%2BcAtAAcji6LeSq%2FMYiAvSsdw3GtrfVSVFUBbIhwRWYR7yOcr%2FBi%2FB1MSJZ16JlgH1AGM3EO2QnmMyrSbTSiACgFBv4yCUapZkt9qwWVL7aeOyHvArJjm8%2Fz9BhdI4XcZgz2%2FvRALosjsk1ODOyMcJn9%2FYI6IrkS5vxMGdUwou2YKfyVqJpn5t9aNs3gbQMbdbkxnGdsr4bTHm2AxWo9yNZK4PXR3uzhAh%2BM0AZejnCrGdy0UvJxl0oMKgWSLR%2B1LH2aE9ViejiFs%2BXn6bTjng3MlIhJ1I1TkuLdg6OcAbD7Xx%2Bc3y9TrWAiSHqVkbZ2v9ilCo6s4AjwZCzFyD9mOL305nV9aonvsQeT2L0gVk4OwOJqXXVRW7naaxswDKVdlYLyMXAnntteYmws2xcVVZzq%2BtHPAooQggmJkc6TLSusOiL4RKgwzzYU1iFQgiUBA1H7E8yPau%2BZl9P7AblVNebtHqTgxLfRqrNvZWjsHZFuqMqKcDWdlFjF7UGvX8Jn24DyEAykJwNcdg0OvJ4p5pQ9tV6SMlP4A0PNh8aYze1ArROyUNTNouy8tNF3Rt0CSXb6bRFl4%2FIfQzNMjaE9WwpYOWQnOdEF%2BTdJNO0iFh7%2BI0kfORzQZb6P2kymS9oTxzBiM9rUqLWr1WE5G6ODhycQd%2FUnNVeMbcH68hYkGycNoUNWc8fxaxfwhDbHpfwM5oeTY7rUX8QAAAABJRU5ErkJggg%3D%3D
  [AiiDA v3.4]: https://img.shields.io/badge/AiiDA->=1.4.4,<2.0.0-007ec6.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAhCAYAAABTERJSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAFhgAABYYBG6Yz4AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAUbSURBVFiFzZhrbFRVEMd%2Fc%2B5uu6UUbIFC%2FUAUVEQCLbQJBIiBDyiImJiIhmohYNCkqJAQxASLF8tDgYRHBLXRhIcKNtFEhVDgAxBJqgmVh4JEKg3EIn2QYqBlt917xg%2BFss%2ByaDHOtzsz5z%2B%2FuZl7ztmF%2F5HJvxVQN6cPYX8%2FPLnOmsvNAvqfwuib%2FbNIk9cQeQnLcKRL5xLIV%2Fic9eJeunjPYbRs4FjQSpTB3aS1IpRKeeOOewajy%2FKKEO8Q0DuVdKy8IqsbPulxGHUfCBBu%2BwUYGuFuBTK7wQnht6PEbf4tlRomVRjCbXNjQEB0AyrFQOL5ENIJm7dTLZE6DPJCnEtFZVXDLny%2B4Sjv0PmmYu1ZdUek9RiMgoDmJ8V0L7XJqsZ3UW8YsBOwEeHeeFce7jEYXBy0m9m4BbXqSj2%2Bxnkg26MCVrN6DEZcwggtd8pTFx%2Fh3B9B50YLaFOPwXQKUt0tBLegtSomfBlfY13PwijbEnhztGzgJsK5h9W9qeWwBqjvyhB2iBs1Qz0AU974DciRGO8CVN8AJhAeMAdA3KbrKEtvxhsI%2B9emWiJlGBEU680Cfk%2BSsVqXZvcFYGXjF8ABVJ%2BTNfVXehyms1zzn1gmIOxLEB6E31%2FWBe5rnCarmo7elf7dJEeaLh80GasliI5F6Q9cAz1GY1OJVNDxTzQTw7iY%2FHEZRQY7xqJ9RU2LFe%2FYqakdP911ha0XhjjiTVAkDwgatWfCGeYocx8M3glG8g8EXhSrLrHnEFJ5Ymow%2FkhIYv6ttYUW1iFmEqqxdVoUs9FmsDYSqmtmJh3Cl1%2BVtl2s7owDUdocR5bceiyoSivGTT5vzpbzL1uoBpmcAAQgW7ArnKD9ng9rc%2BNgrobSNwpSkkhcRN%2BvmXLjIsDovYHHEfmsYFygPAnIDEQrQPzJYCOaLHLUfIt7Oq0LJn9fxkSgNCb1qEIQ5UKgT%2Fs6gJmVOOroJhQBXVqw118QtWLdyUxEP45sUpSzqP7RDdFYMyB9UReMiF1MzPwoUqHt8hjGFFeP5wZAbZ%2F0%2BcAtAAcji6LeSq%2FMYiAvSsdw3GtrfVSVFUBbIhwRWYR7yOcr%2FBi%2FB1MSJZ16JlgH1AGM3EO2QnmMyrSbTSiACgFBv4yCUapZkt9qwWVL7aeOyHvArJjm8%2Fz9BhdI4XcZgz2%2FvRALosjsk1ODOyMcJn9%2FYI6IrkS5vxMGdUwou2YKfyVqJpn5t9aNs3gbQMbdbkxnGdsr4bTHm2AxWo9yNZK4PXR3uzhAh%2BM0AZejnCrGdy0UvJxl0oMKgWSLR%2B1LH2aE9ViejiFs%2BXn6bTjng3MlIhJ1I1TkuLdg6OcAbD7Xx%2Bc3y9TrWAiSHqVkbZ2v9ilCo6s4AjwZCzFyD9mOL305nV9aonvsQeT2L0gVk4OwOJqXXVRW7naaxswDKVdlYLyMXAnntteYmws2xcVVZzq%2BtHPAooQggmJkc6TLSusOiL4RKgwzzYU1iFQgiUBA1H7E8yPau%2BZl9P7AblVNebtHqTgxLfRqrNvZWjsHZFuqMqKcDWdlFjF7UGvX8Jn24DyEAykJwNcdg0OvJ4p5pQ9tV6SMlP4A0PNh8aYze1ArROyUNTNouy8tNF3Rt0CSXb6bRFl4%2FIfQzNMjaE9WwpYOWQnOdEF%2BTdJNO0iFh7%2BI0kfORzQZb6P2kymS9oTxzBiM9rUqLWr1WE5G6ODhycQd%2FUnNVeMbcH68hYkGycNoUNWc8fxaxfwhDbHpfwM5oeTY7rUX8QAAAABJRU5ErkJggg%3D%3D
  [AiiDA v3.3]: https://img.shields.io/badge/AiiDA->=1.4.4,<2.0.0-007ec6.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAhCAYAAABTERJSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAFhgAABYYBG6Yz4AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAUbSURBVFiFzZhrbFRVEMd%2Fc%2B5uu6UUbIFC%2FUAUVEQCLbQJBIiBDyiImJiIhmohYNCkqJAQxASLF8tDgYRHBLXRhIcKNtFEhVDgAxBJqgmVh4JEKg3EIn2QYqBlt917xg%2BFss%2ByaDHOtzsz5z%2B%2FuZl7ztmF%2F5HJvxVQN6cPYX8%2FPLnOmsvNAvqfwuib%2FbNIk9cQeQnLcKRL5xLIV%2Fic9eJeunjPYbRs4FjQSpTB3aS1IpRKeeOOewajy%2FKKEO8Q0DuVdKy8IqsbPulxGHUfCBBu%2BwUYGuFuBTK7wQnht6PEbf4tlRomVRjCbXNjQEB0AyrFQOL5ENIJm7dTLZE6DPJCnEtFZVXDLny%2B4Sjv0PmmYu1ZdUek9RiMgoDmJ8V0L7XJqsZ3UW8YsBOwEeHeeFce7jEYXBy0m9m4BbXqSj2%2Bxnkg26MCVrN6DEZcwggtd8pTFx%2Fh3B9B50YLaFOPwXQKUt0tBLegtSomfBlfY13PwijbEnhztGzgJsK5h9W9qeWwBqjvyhB2iBs1Qz0AU974DciRGO8CVN8AJhAeMAdA3KbrKEtvxhsI%2B9emWiJlGBEU680Cfk%2BSsVqXZvcFYGXjF8ABVJ%2BTNfVXehyms1zzn1gmIOxLEB6E31%2FWBe5rnCarmo7elf7dJEeaLh80GasliI5F6Q9cAz1GY1OJVNDxTzQTw7iY%2FHEZRQY7xqJ9RU2LFe%2FYqakdP911ha0XhjjiTVAkDwgatWfCGeYocx8M3glG8g8EXhSrLrHnEFJ5Ymow%2FkhIYv6ttYUW1iFmEqqxdVoUs9FmsDYSqmtmJh3Cl1%2BVtl2s7owDUdocR5bceiyoSivGTT5vzpbzL1uoBpmcAAQgW7ArnKD9ng9rc%2BNgrobSNwpSkkhcRN%2BvmXLjIsDovYHHEfmsYFygPAnIDEQrQPzJYCOaLHLUfIt7Oq0LJn9fxkSgNCb1qEIQ5UKgT%2Fs6gJmVOOroJhQBXVqw118QtWLdyUxEP45sUpSzqP7RDdFYMyB9UReMiF1MzPwoUqHt8hjGFFeP5wZAbZ%2F0%2BcAtAAcji6LeSq%2FMYiAvSsdw3GtrfVSVFUBbIhwRWYR7yOcr%2FBi%2FB1MSJZ16JlgH1AGM3EO2QnmMyrSbTSiACgFBv4yCUapZkt9qwWVL7aeOyHvArJjm8%2Fz9BhdI4XcZgz2%2FvRALosjsk1ODOyMcJn9%2FYI6IrkS5vxMGdUwou2YKfyVqJpn5t9aNs3gbQMbdbkxnGdsr4bTHm2AxWo9yNZK4PXR3uzhAh%2BM0AZejnCrGdy0UvJxl0oMKgWSLR%2B1LH2aE9ViejiFs%2BXn6bTjng3MlIhJ1I1TkuLdg6OcAbD7Xx%2Bc3y9TrWAiSHqVkbZ2v9ilCo6s4AjwZCzFyD9mOL305nV9aonvsQeT2L0gVk4OwOJqXXVRW7naaxswDKVdlYLyMXAnntteYmws2xcVVZzq%2BtHPAooQggmJkc6TLSusOiL4RKgwzzYU1iFQgiUBA1H7E8yPau%2BZl9P7AblVNebtHqTgxLfRqrNvZWjsHZFuqMqKcDWdlFjF7UGvX8Jn24DyEAykJwNcdg0OvJ4p5pQ9tV6SMlP4A0PNh8aYze1ArROyUNTNouy8tNF3Rt0CSXb6bRFl4%2FIfQzNMjaE9WwpYOWQnOdEF%2BTdJNO0iFh7%2BI0kfORzQZb6P2kymS9oTxzBiM9rUqLWr1WE5G6ODhycQd%2FUnNVeMbcH68hYkGycNoUNWc8fxaxfwhDbHpfwM5oeTY7rUX8QAAAABJRU5ErkJggg%3D%3D
  [AiiDA v3.1]: https://img.shields.io/badge/AiiDA->=1.2.0,<2.0.0-007ec6.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAhCAYAAABTERJSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAFhgAABYYBG6Yz4AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAUbSURBVFiFzZhrbFRVEMd%2Fc%2B5uu6UUbIFC%2FUAUVEQCLbQJBIiBDyiImJiIhmohYNCkqJAQxASLF8tDgYRHBLXRhIcKNtFEhVDgAxBJqgmVh4JEKg3EIn2QYqBlt917xg%2BFss%2ByaDHOtzsz5z%2B%2FuZl7ztmF%2F5HJvxVQN6cPYX8%2FPLnOmsvNAvqfwuib%2FbNIk9cQeQnLcKRL5xLIV%2Fic9eJeunjPYbRs4FjQSpTB3aS1IpRKeeOOewajy%2FKKEO8Q0DuVdKy8IqsbPulxGHUfCBBu%2BwUYGuFuBTK7wQnht6PEbf4tlRomVRjCbXNjQEB0AyrFQOL5ENIJm7dTLZE6DPJCnEtFZVXDLny%2B4Sjv0PmmYu1ZdUek9RiMgoDmJ8V0L7XJqsZ3UW8YsBOwEeHeeFce7jEYXBy0m9m4BbXqSj2%2Bxnkg26MCVrN6DEZcwggtd8pTFx%2Fh3B9B50YLaFOPwXQKUt0tBLegtSomfBlfY13PwijbEnhztGzgJsK5h9W9qeWwBqjvyhB2iBs1Qz0AU974DciRGO8CVN8AJhAeMAdA3KbrKEtvxhsI%2B9emWiJlGBEU680Cfk%2BSsVqXZvcFYGXjF8ABVJ%2BTNfVXehyms1zzn1gmIOxLEB6E31%2FWBe5rnCarmo7elf7dJEeaLh80GasliI5F6Q9cAz1GY1OJVNDxTzQTw7iY%2FHEZRQY7xqJ9RU2LFe%2FYqakdP911ha0XhjjiTVAkDwgatWfCGeYocx8M3glG8g8EXhSrLrHnEFJ5Ymow%2FkhIYv6ttYUW1iFmEqqxdVoUs9FmsDYSqmtmJh3Cl1%2BVtl2s7owDUdocR5bceiyoSivGTT5vzpbzL1uoBpmcAAQgW7ArnKD9ng9rc%2BNgrobSNwpSkkhcRN%2BvmXLjIsDovYHHEfmsYFygPAnIDEQrQPzJYCOaLHLUfIt7Oq0LJn9fxkSgNCb1qEIQ5UKgT%2Fs6gJmVOOroJhQBXVqw118QtWLdyUxEP45sUpSzqP7RDdFYMyB9UReMiF1MzPwoUqHt8hjGFFeP5wZAbZ%2F0%2BcAtAAcji6LeSq%2FMYiAvSsdw3GtrfVSVFUBbIhwRWYR7yOcr%2FBi%2FB1MSJZ16JlgH1AGM3EO2QnmMyrSbTSiACgFBv4yCUapZkt9qwWVL7aeOyHvArJjm8%2Fz9BhdI4XcZgz2%2FvRALosjsk1ODOyMcJn9%2FYI6IrkS5vxMGdUwou2YKfyVqJpn5t9aNs3gbQMbdbkxnGdsr4bTHm2AxWo9yNZK4PXR3uzhAh%2BM0AZejnCrGdy0UvJxl0oMKgWSLR%2B1LH2aE9ViejiFs%2BXn6bTjng3MlIhJ1I1TkuLdg6OcAbD7Xx%2Bc3y9TrWAiSHqVkbZ2v9ilCo6s4AjwZCzFyD9mOL305nV9aonvsQeT2L0gVk4OwOJqXXVRW7naaxswDKVdlYLyMXAnntteYmws2xcVVZzq%2BtHPAooQggmJkc6TLSusOiL4RKgwzzYU1iFQgiUBA1H7E8yPau%2BZl9P7AblVNebtHqTgxLfRqrNvZWjsHZFuqMqKcDWdlFjF7UGvX8Jn24DyEAykJwNcdg0OvJ4p5pQ9tV6SMlP4A0PNh8aYze1ArROyUNTNouy8tNF3Rt0CSXb6bRFl4%2FIfQzNMjaE9WwpYOWQnOdEF%2BTdJNO0iFh7%2BI0kfORzQZb6P2kymS9oTxzBiM9rUqLWr1WE5G6ODhycQd%2FUnNVeMbcH68hYkGycNoUNWc8fxaxfwhDbHpfwM5oeTY7rUX8QAAAABJRU5ErkJggg%3D%3D
  [AiiDA v3.0]: https://img.shields.io/badge/AiiDA->=1.0.0,<1.1.0-007ec6.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAhCAYAAABTERJSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAFhgAABYYBG6Yz4AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAUbSURBVFiFzZhrbFRVEMd%2Fc%2B5uu6UUbIFC%2FUAUVEQCLbQJBIiBDyiImJiIhmohYNCkqJAQxASLF8tDgYRHBLXRhIcKNtFEhVDgAxBJqgmVh4JEKg3EIn2QYqBlt917xg%2BFss%2ByaDHOtzsz5z%2B%2FuZl7ztmF%2F5HJvxVQN6cPYX8%2FPLnOmsvNAvqfwuib%2FbNIk9cQeQnLcKRL5xLIV%2Fic9eJeunjPYbRs4FjQSpTB3aS1IpRKeeOOewajy%2FKKEO8Q0DuVdKy8IqsbPulxGHUfCBBu%2BwUYGuFuBTK7wQnht6PEbf4tlRomVRjCbXNjQEB0AyrFQOL5ENIJm7dTLZE6DPJCnEtFZVXDLny%2B4Sjv0PmmYu1ZdUek9RiMgoDmJ8V0L7XJqsZ3UW8YsBOwEeHeeFce7jEYXBy0m9m4BbXqSj2%2Bxnkg26MCVrN6DEZcwggtd8pTFx%2Fh3B9B50YLaFOPwXQKUt0tBLegtSomfBlfY13PwijbEnhztGzgJsK5h9W9qeWwBqjvyhB2iBs1Qz0AU974DciRGO8CVN8AJhAeMAdA3KbrKEtvxhsI%2B9emWiJlGBEU680Cfk%2BSsVqXZvcFYGXjF8ABVJ%2BTNfVXehyms1zzn1gmIOxLEB6E31%2FWBe5rnCarmo7elf7dJEeaLh80GasliI5F6Q9cAz1GY1OJVNDxTzQTw7iY%2FHEZRQY7xqJ9RU2LFe%2FYqakdP911ha0XhjjiTVAkDwgatWfCGeYocx8M3glG8g8EXhSrLrHnEFJ5Ymow%2FkhIYv6ttYUW1iFmEqqxdVoUs9FmsDYSqmtmJh3Cl1%2BVtl2s7owDUdocR5bceiyoSivGTT5vzpbzL1uoBpmcAAQgW7ArnKD9ng9rc%2BNgrobSNwpSkkhcRN%2BvmXLjIsDovYHHEfmsYFygPAnIDEQrQPzJYCOaLHLUfIt7Oq0LJn9fxkSgNCb1qEIQ5UKgT%2Fs6gJmVOOroJhQBXVqw118QtWLdyUxEP45sUpSzqP7RDdFYMyB9UReMiF1MzPwoUqHt8hjGFFeP5wZAbZ%2F0%2BcAtAAcji6LeSq%2FMYiAvSsdw3GtrfVSVFUBbIhwRWYR7yOcr%2FBi%2FB1MSJZ16JlgH1AGM3EO2QnmMyrSbTSiACgFBv4yCUapZkt9qwWVL7aeOyHvArJjm8%2Fz9BhdI4XcZgz2%2FvRALosjsk1ODOyMcJn9%2FYI6IrkS5vxMGdUwou2YKfyVqJpn5t9aNs3gbQMbdbkxnGdsr4bTHm2AxWo9yNZK4PXR3uzhAh%2BM0AZejnCrGdy0UvJxl0oMKgWSLR%2B1LH2aE9ViejiFs%2BXn6bTjng3MlIhJ1I1TkuLdg6OcAbD7Xx%2Bc3y9TrWAiSHqVkbZ2v9ilCo6s4AjwZCzFyD9mOL305nV9aonvsQeT2L0gVk4OwOJqXXVRW7naaxswDKVdlYLyMXAnntteYmws2xcVVZzq%2BtHPAooQggmJkc6TLSusOiL4RKgwzzYU1iFQgiUBA1H7E8yPau%2BZl9P7AblVNebtHqTgxLfRqrNvZWjsHZFuqMqKcDWdlFjF7UGvX8Jn24DyEAykJwNcdg0OvJ4p5pQ9tV6SMlP4A0PNh8aYze1ArROyUNTNouy8tNF3Rt0CSXb6bRFl4%2FIfQzNMjaE9WwpYOWQnOdEF%2BTdJNO0iFh7%2BI0kfORzQZb6P2kymS9oTxzBiM9rUqLWr1WE5G6ODhycQd%2FUnNVeMbcH68hYkGycNoUNWc8fxaxfwhDbHpfwM5oeTY7rUX8QAAAABJRU5ErkJggg%3D%3D
  [AiiDA v2.0]: https://img.shields.io/badge/AiiDA->=0.12,<1.0.0-007ec6.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAhCAYAAABTERJSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAFhgAABYYBG6Yz4AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAUbSURBVFiFzZhrbFRVEMd%2Fc%2B5uu6UUbIFC%2FUAUVEQCLbQJBIiBDyiImJiIhmohYNCkqJAQxASLF8tDgYRHBLXRhIcKNtFEhVDgAxBJqgmVh4JEKg3EIn2QYqBlt917xg%2BFss%2ByaDHOtzsz5z%2B%2FuZl7ztmF%2F5HJvxVQN6cPYX8%2FPLnOmsvNAvqfwuib%2FbNIk9cQeQnLcKRL5xLIV%2Fic9eJeunjPYbRs4FjQSpTB3aS1IpRKeeOOewajy%2FKKEO8Q0DuVdKy8IqsbPulxGHUfCBBu%2BwUYGuFuBTK7wQnht6PEbf4tlRomVRjCbXNjQEB0AyrFQOL5ENIJm7dTLZE6DPJCnEtFZVXDLny%2B4Sjv0PmmYu1ZdUek9RiMgoDmJ8V0L7XJqsZ3UW8YsBOwEeHeeFce7jEYXBy0m9m4BbXqSj2%2Bxnkg26MCVrN6DEZcwggtd8pTFx%2Fh3B9B50YLaFOPwXQKUt0tBLegtSomfBlfY13PwijbEnhztGzgJsK5h9W9qeWwBqjvyhB2iBs1Qz0AU974DciRGO8CVN8AJhAeMAdA3KbrKEtvxhsI%2B9emWiJlGBEU680Cfk%2BSsVqXZvcFYGXjF8ABVJ%2BTNfVXehyms1zzn1gmIOxLEB6E31%2FWBe5rnCarmo7elf7dJEeaLh80GasliI5F6Q9cAz1GY1OJVNDxTzQTw7iY%2FHEZRQY7xqJ9RU2LFe%2FYqakdP911ha0XhjjiTVAkDwgatWfCGeYocx8M3glG8g8EXhSrLrHnEFJ5Ymow%2FkhIYv6ttYUW1iFmEqqxdVoUs9FmsDYSqmtmJh3Cl1%2BVtl2s7owDUdocR5bceiyoSivGTT5vzpbzL1uoBpmcAAQgW7ArnKD9ng9rc%2BNgrobSNwpSkkhcRN%2BvmXLjIsDovYHHEfmsYFygPAnIDEQrQPzJYCOaLHLUfIt7Oq0LJn9fxkSgNCb1qEIQ5UKgT%2Fs6gJmVOOroJhQBXVqw118QtWLdyUxEP45sUpSzqP7RDdFYMyB9UReMiF1MzPwoUqHt8hjGFFeP5wZAbZ%2F0%2BcAtAAcji6LeSq%2FMYiAvSsdw3GtrfVSVFUBbIhwRWYR7yOcr%2FBi%2FB1MSJZ16JlgH1AGM3EO2QnmMyrSbTSiACgFBv4yCUapZkt9qwWVL7aeOyHvArJjm8%2Fz9BhdI4XcZgz2%2FvRALosjsk1ODOyMcJn9%2FYI6IrkS5vxMGdUwou2YKfyVqJpn5t9aNs3gbQMbdbkxnGdsr4bTHm2AxWo9yNZK4PXR3uzhAh%2BM0AZejnCrGdy0UvJxl0oMKgWSLR%2B1LH2aE9ViejiFs%2BXn6bTjng3MlIhJ1I1TkuLdg6OcAbD7Xx%2Bc3y9TrWAiSHqVkbZ2v9ilCo6s4AjwZCzFyD9mOL305nV9aonvsQeT2L0gVk4OwOJqXXVRW7naaxswDKVdlYLyMXAnntteYmws2xcVVZzq%2BtHPAooQggmJkc6TLSusOiL4RKgwzzYU1iFQgiUBA1H7E8yPau%2BZl9P7AblVNebtHqTgxLfRqrNvZWjsHZFuqMqKcDWdlFjF7UGvX8Jn24DyEAykJwNcdg0OvJ4p5pQ9tV6SMlP4A0PNh8aYze1ArROyUNTNouy8tNF3Rt0CSXb6bRFl4%2FIfQzNMjaE9WwpYOWQnOdEF%2BTdJNO0iFh7%2BI0kfORzQZb6P2kymS9oTxzBiM9rUqLWr1WE5G6ODhycQd%2FUnNVeMbcH68hYkGycNoUNWc8fxaxfwhDbHpfwM5oeTY7rUX8QAAAABJRU5ErkJggg%3D%3D

  [Python v3.6-v3.9]: https://img.shields.io/badge/python-3.6%20%7C%203.7%20%7C%203.8%20%7C%203.9-blue
  [Python v3.6-v3.8]: https://img.shields.io/badge/python-3.6%20%7C%203.7%20%7C%203.8-blue
  [Python v3.5-v3.8]: https://img.shields.io/badge/python-3.5%20%7C%203.6%20%7C%203.7%20%7C%203.8-blue
  [Python v2.7-v3.8]: https://img.shields.io/badge/python-2.7%20%7C%203.5%20%7C%203.6%20%7C%203.7%20%7C%203.8-blue

  [QE v6]: https://img.shields.io/badge/Quantum%20ESPRESSO->=6.0,<=6.7-007ec6.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5QkVEQ0n7crnLAAABcBJREFUOMtVld1PHOcVxs9533c+dmdnd2FtWNhdwEBY1xjWxk7bOHGJCEFJaOJ8VJUi2WqrtFetKvWm6lX/hKq9qFRVVi+qSk2jNKriSlEkKyYkNrFDbYONsYGADbPGBu/HLLs7Ozsz7+nFklQ9t+foJ53zPHoOnj17FhGllMC4ETZsu6wpAhm6btNpBkJRo5FQJKQBYrXWqNScwGuGNaGoipRERIgIAAAgEBEBfAk/e+PU+LGe3/39yvziigTs7OgYHzv09LdSnYmoJhiCdBuNrR17bmn788XNYrEQCamA+A1LAAAAaZp6mK+K1bmBWOIyht559enpUxlgys27OzM37hftuuCYTJhjAwd+NJ394XjPu7P5jz5fVFnAuZBSIqJAhHrdjR2MkWXB43vRzNRvf/rCiSF+6drWPz6583i3gCAZIgFIgve46M8kz070/2Qqnk0/98f3rwaByxgnIv7U0OHvjI385p3xyMJc3SoOPpdNHeR/upD/28c3yHeMkKapiqoITRG6JjSBxWJpZvER+crLRxvJrsG523nBCBH51NTkr38wEL3378bKlrSbunDPr0c/mltpj6iMCyklEEkiIAKiABBCOlPg2rotAv7yoO2E+2+tWLomRDalaO+/u/vhGuoh05SzT3V/fC/fZigBAZFsSYKMEZErRMR1E6WyBuD43j8vB4Oh8NsD+txS0t59zKf7U8MX7vpFzncabm/yz2aXW6lzzoioRZGMTSwsNXQtUyiO3N/SpWxWa1kjkiuVtx5UTvQ6e9H0wtoTRk4ALpHAUAhvpJP5sqsJJokAEQB8ziJu0zaN4QeWWXc+yw1/0pdpvDZt/PIXcyNDjx7Xbp//z/FoNWSaTAwe4M+YJD2Kajd5CJs+ICACEgWMxRx34vrC4MbmbjRyZThbcZyEorw+MXl95tKObd84dviCHacvVzuTEVbEA/rPXwq/Ea8Zaj5gAkACACACBIzF6vV4uVI1wkt9PUrd6Umlp187U3cbqh4SyESttpztX79divseW1h6cE2OmtOvVKVXI+T7jgcCUILgYXvbZqqrGDUdRQjEcsUOh41PZ2Ysa+uZU88amt7QFKuJ7FGJcZS//+ul2RUwEhpJIvgahMiIXM7v9qabqtpq1Ot1Aurs7Jx8ceqFyRdDoVBA5CL61TpTVMWt1W4+2o1lDIORJNiXnIgAuJQ+oub7HMD3/fb2RCqVsu3yZ7OfWtaWbdsKY3oQ+GGdSSIBVNFNLWOmVem11IJ91XgQFKKm5nlxp1GXQU86ZVnWxYsXh7KHq3al4jbMmpM2NLcjwYhAMLDswOntPhn3iAkAaC1CiAzA42y9s+Pk2oYP2NU/sJ3PC8ZS3d3r23lfKCfX1ju+27frBgwAFIU/2SnfCved7pHdMd31A8awZUiJqHr+Wldn0TReur2ckrSRt5RYLJFM7t1Z/t7VxVePcKu/194p8dHRUWTMdxs1LfH8Uc0IvMsPUUcfkH2dNchlsJVo54rQLs0aK6uHnIb25XywunnmtNHx5rPnrzlutcJzuRwAqIqwtoup7OjpTGEPEgv3y2EVERkRASIito71VVu8YkZKujLnsW+/NXJqsusDq/vK/HI4rPFcLteaZhTcsWpjY7nn+2xHdN3aKEDQVBXBGCIgMlQkcYRCIMt69O3vj7x1AueLh/7y4byuAAHyXC6HiETEhahVKzc3myPDR8aPYm8y/aAUPCntNVy36QdNz3OafgBsqC/zqzNHxo+Fr+cTf3jvKgQNzgUR4blz5/YdSMQ5azRcI9r+41eOnx4xJKp3N2oLG4Un5ToiJBPm2GBHf1/Eqzv/urLzwcV5Rk0hlFbU/g/UYjHGfN9zfRga6Jk43nNi8GBbPEKKAoDk+du79hfL2zPXNx7mt42QgoxJ+X/hv1+tv8S5iAhY+2pjeeV+JBJpi4ZNQyMCe88p2FXXqesqNyO6lPQNBQD+C1Fl4Lfj+TndAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTA5LTIxVDE1OjEzOjM5KzAyOjAwpCQipAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0wOS0yMVQxNToxMzozOSswMjowMNV5mhgAAAAASUVORK5CYII=
  [QE v6-7]: https://img.shields.io/badge/Quantum%20ESPRESSO->=6.0,<=7.0-007ec6.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5QkVEQ0n7crnLAAABcBJREFUOMtVld1PHOcVxs9533c+dmdnd2FtWNhdwEBY1xjWxk7bOHGJCEFJaOJ8VJUi2WqrtFetKvWm6lX/hKq9qFRVVi+qSk2jNKriSlEkKyYkNrFDbYONsYGADbPGBu/HLLs7Ozsz7+nFklQ9t+foJ53zPHoOnj17FhGllMC4ETZsu6wpAhm6btNpBkJRo5FQJKQBYrXWqNScwGuGNaGoipRERIgIAAAgEBEBfAk/e+PU+LGe3/39yvziigTs7OgYHzv09LdSnYmoJhiCdBuNrR17bmn788XNYrEQCamA+A1LAAAAaZp6mK+K1bmBWOIyht559enpUxlgys27OzM37hftuuCYTJhjAwd+NJ394XjPu7P5jz5fVFnAuZBSIqJAhHrdjR2MkWXB43vRzNRvf/rCiSF+6drWPz6583i3gCAZIgFIgve46M8kz070/2Qqnk0/98f3rwaByxgnIv7U0OHvjI385p3xyMJc3SoOPpdNHeR/upD/28c3yHeMkKapiqoITRG6JjSBxWJpZvER+crLRxvJrsG523nBCBH51NTkr38wEL3378bKlrSbunDPr0c/mltpj6iMCyklEEkiIAKiABBCOlPg2rotAv7yoO2E+2+tWLomRDalaO+/u/vhGuoh05SzT3V/fC/fZigBAZFsSYKMEZErRMR1E6WyBuD43j8vB4Oh8NsD+txS0t59zKf7U8MX7vpFzncabm/yz2aXW6lzzoioRZGMTSwsNXQtUyiO3N/SpWxWa1kjkiuVtx5UTvQ6e9H0wtoTRk4ALpHAUAhvpJP5sqsJJokAEQB8ziJu0zaN4QeWWXc+yw1/0pdpvDZt/PIXcyNDjx7Xbp//z/FoNWSaTAwe4M+YJD2Kajd5CJs+ICACEgWMxRx34vrC4MbmbjRyZThbcZyEorw+MXl95tKObd84dviCHacvVzuTEVbEA/rPXwq/Ea8Zaj5gAkACACACBIzF6vV4uVI1wkt9PUrd6Umlp187U3cbqh4SyESttpztX79divseW1h6cE2OmtOvVKVXI+T7jgcCUILgYXvbZqqrGDUdRQjEcsUOh41PZ2Ysa+uZU88amt7QFKuJ7FGJcZS//+ul2RUwEhpJIvgahMiIXM7v9qabqtpq1Ot1Aurs7Jx8ceqFyRdDoVBA5CL61TpTVMWt1W4+2o1lDIORJNiXnIgAuJQ+oub7HMD3/fb2RCqVsu3yZ7OfWtaWbdsKY3oQ+GGdSSIBVNFNLWOmVem11IJ91XgQFKKm5nlxp1GXQU86ZVnWxYsXh7KHq3al4jbMmpM2NLcjwYhAMLDswOntPhn3iAkAaC1CiAzA42y9s+Pk2oYP2NU/sJ3PC8ZS3d3r23lfKCfX1ju+27frBgwAFIU/2SnfCved7pHdMd31A8awZUiJqHr+Wldn0TReur2ckrSRt5RYLJFM7t1Z/t7VxVePcKu/194p8dHRUWTMdxs1LfH8Uc0IvMsPUUcfkH2dNchlsJVo54rQLs0aK6uHnIb25XywunnmtNHx5rPnrzlutcJzuRwAqIqwtoup7OjpTGEPEgv3y2EVERkRASIito71VVu8YkZKujLnsW+/NXJqsusDq/vK/HI4rPFcLteaZhTcsWpjY7nn+2xHdN3aKEDQVBXBGCIgMlQkcYRCIMt69O3vj7x1AueLh/7y4byuAAHyXC6HiETEhahVKzc3myPDR8aPYm8y/aAUPCntNVy36QdNz3OafgBsqC/zqzNHxo+Fr+cTf3jvKgQNzgUR4blz5/YdSMQ5azRcI9r+41eOnx4xJKp3N2oLG4Un5ToiJBPm2GBHf1/Eqzv/urLzwcV5Rk0hlFbU/g/UYjHGfN9zfRga6Jk43nNi8GBbPEKKAoDk+du79hfL2zPXNx7mt42QgoxJ+X/hv1+tv8S5iAhY+2pjeeV+JBJpi4ZNQyMCe88p2FXXqesqNyO6lPQNBQD+C1Fl4Lfj+TndAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTA5LTIxVDE1OjEzOjM5KzAyOjAwpCQipAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0wOS0yMVQxNToxMzozOSswMjowMNV5mhgAAAAASUVORK5CYII=
  [QE v6.6-7.1]: https://img.shields.io/badge/Quantum%20ESPRESSO->=6.6,<=7.1-007ec6.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5QkVEQ0n7crnLAAABcBJREFUOMtVld1PHOcVxs9533c+dmdnd2FtWNhdwEBY1xjWxk7bOHGJCEFJaOJ8VJUi2WqrtFetKvWm6lX/hKq9qFRVVi+qSk2jNKriSlEkKyYkNrFDbYONsYGADbPGBu/HLLs7Ozsz7+nFklQ9t+foJ53zPHoOnj17FhGllMC4ETZsu6wpAhm6btNpBkJRo5FQJKQBYrXWqNScwGuGNaGoipRERIgIAAAgEBEBfAk/e+PU+LGe3/39yvziigTs7OgYHzv09LdSnYmoJhiCdBuNrR17bmn788XNYrEQCamA+A1LAAAAaZp6mK+K1bmBWOIyht559enpUxlgys27OzM37hftuuCYTJhjAwd+NJ394XjPu7P5jz5fVFnAuZBSIqJAhHrdjR2MkWXB43vRzNRvf/rCiSF+6drWPz6583i3gCAZIgFIgve46M8kz070/2Qqnk0/98f3rwaByxgnIv7U0OHvjI385p3xyMJc3SoOPpdNHeR/upD/28c3yHeMkKapiqoITRG6JjSBxWJpZvER+crLRxvJrsG523nBCBH51NTkr38wEL3378bKlrSbunDPr0c/mltpj6iMCyklEEkiIAKiABBCOlPg2rotAv7yoO2E+2+tWLomRDalaO+/u/vhGuoh05SzT3V/fC/fZigBAZFsSYKMEZErRMR1E6WyBuD43j8vB4Oh8NsD+txS0t59zKf7U8MX7vpFzncabm/yz2aXW6lzzoioRZGMTSwsNXQtUyiO3N/SpWxWa1kjkiuVtx5UTvQ6e9H0wtoTRk4ALpHAUAhvpJP5sqsJJokAEQB8ziJu0zaN4QeWWXc+yw1/0pdpvDZt/PIXcyNDjx7Xbp//z/FoNWSaTAwe4M+YJD2Kajd5CJs+ICACEgWMxRx34vrC4MbmbjRyZThbcZyEorw+MXl95tKObd84dviCHacvVzuTEVbEA/rPXwq/Ea8Zaj5gAkACACACBIzF6vV4uVI1wkt9PUrd6Umlp187U3cbqh4SyESttpztX79divseW1h6cE2OmtOvVKVXI+T7jgcCUILgYXvbZqqrGDUdRQjEcsUOh41PZ2Ysa+uZU88amt7QFKuJ7FGJcZS//+ul2RUwEhpJIvgahMiIXM7v9qabqtpq1Ot1Aurs7Jx8ceqFyRdDoVBA5CL61TpTVMWt1W4+2o1lDIORJNiXnIgAuJQ+oub7HMD3/fb2RCqVsu3yZ7OfWtaWbdsKY3oQ+GGdSSIBVNFNLWOmVem11IJ91XgQFKKm5nlxp1GXQU86ZVnWxYsXh7KHq3al4jbMmpM2NLcjwYhAMLDswOntPhn3iAkAaC1CiAzA42y9s+Pk2oYP2NU/sJ3PC8ZS3d3r23lfKCfX1ju+27frBgwAFIU/2SnfCved7pHdMd31A8awZUiJqHr+Wldn0TReur2ckrSRt5RYLJFM7t1Z/t7VxVePcKu/194p8dHRUWTMdxs1LfH8Uc0IvMsPUUcfkH2dNchlsJVo54rQLs0aK6uHnIb25XywunnmtNHx5rPnrzlutcJzuRwAqIqwtoup7OjpTGEPEgv3y2EVERkRASIito71VVu8YkZKujLnsW+/NXJqsusDq/vK/HI4rPFcLteaZhTcsWpjY7nn+2xHdN3aKEDQVBXBGCIgMlQkcYRCIMt69O3vj7x1AueLh/7y4byuAAHyXC6HiETEhahVKzc3myPDR8aPYm8y/aAUPCntNVy36QdNz3OafgBsqC/zqzNHxo+Fr+cTf3jvKgQNzgUR4blz5/YdSMQ5azRcI9r+41eOnx4xJKp3N2oLG4Un5ToiJBPm2GBHf1/Eqzv/urLzwcV5Rk0hlFbU/g/UYjHGfN9zfRga6Jk43nNi8GBbPEKKAoDk+du79hfL2zPXNx7mt42QgoxJ+X/hv1+tv8S5iAhY+2pjeeV+JBJpi4ZNQyMCe88p2FXXqesqNyO6lPQNBQD+C1Fl4Lfj+TndAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTA5LTIxVDE1OjEzOjM5KzAyOjAwpCQipAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0wOS0yMVQxNToxMzozOSswMjowMNV5mhgAAAAASUVORK5CYII=
  [QE v6.6-7.3]: https://img.shields.io/badge/Quantum%20ESPRESSO->=6.6,<=7.3-007ec6.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5QkVEQ0n7crnLAAABcBJREFUOMtVld1PHOcVxs9533c+dmdnd2FtWNhdwEBY1xjWxk7bOHGJCEFJaOJ8VJUi2WqrtFetKvWm6lX/hKq9qFRVVi+qSk2jNKriSlEkKyYkNrFDbYONsYGADbPGBu/HLLs7Ozsz7+nFklQ9t+foJ53zPHoOnj17FhGllMC4ETZsu6wpAhm6btNpBkJRo5FQJKQBYrXWqNScwGuGNaGoipRERIgIAAAgEBEBfAk/e+PU+LGe3/39yvziigTs7OgYHzv09LdSnYmoJhiCdBuNrR17bmn788XNYrEQCamA+A1LAAAAaZp6mK+K1bmBWOIyht559enpUxlgys27OzM37hftuuCYTJhjAwd+NJ394XjPu7P5jz5fVFnAuZBSIqJAhHrdjR2MkWXB43vRzNRvf/rCiSF+6drWPz6583i3gCAZIgFIgve46M8kz070/2Qqnk0/98f3rwaByxgnIv7U0OHvjI385p3xyMJc3SoOPpdNHeR/upD/28c3yHeMkKapiqoITRG6JjSBxWJpZvER+crLRxvJrsG523nBCBH51NTkr38wEL3378bKlrSbunDPr0c/mltpj6iMCyklEEkiIAKiABBCOlPg2rotAv7yoO2E+2+tWLomRDalaO+/u/vhGuoh05SzT3V/fC/fZigBAZFsSYKMEZErRMR1E6WyBuD43j8vB4Oh8NsD+txS0t59zKf7U8MX7vpFzncabm/yz2aXW6lzzoioRZGMTSwsNXQtUyiO3N/SpWxWa1kjkiuVtx5UTvQ6e9H0wtoTRk4ALpHAUAhvpJP5sqsJJokAEQB8ziJu0zaN4QeWWXc+yw1/0pdpvDZt/PIXcyNDjx7Xbp//z/FoNWSaTAwe4M+YJD2Kajd5CJs+ICACEgWMxRx34vrC4MbmbjRyZThbcZyEorw+MXl95tKObd84dviCHacvVzuTEVbEA/rPXwq/Ea8Zaj5gAkACACACBIzF6vV4uVI1wkt9PUrd6Umlp187U3cbqh4SyESttpztX79divseW1h6cE2OmtOvVKVXI+T7jgcCUILgYXvbZqqrGDUdRQjEcsUOh41PZ2Ysa+uZU88amt7QFKuJ7FGJcZS//+ul2RUwEhpJIvgahMiIXM7v9qabqtpq1Ot1Aurs7Jx8ceqFyRdDoVBA5CL61TpTVMWt1W4+2o1lDIORJNiXnIgAuJQ+oub7HMD3/fb2RCqVsu3yZ7OfWtaWbdsKY3oQ+GGdSSIBVNFNLWOmVem11IJ91XgQFKKm5nlxp1GXQU86ZVnWxYsXh7KHq3al4jbMmpM2NLcjwYhAMLDswOntPhn3iAkAaC1CiAzA42y9s+Pk2oYP2NU/sJ3PC8ZS3d3r23lfKCfX1ju+27frBgwAFIU/2SnfCved7pHdMd31A8awZUiJqHr+Wldn0TReur2ckrSRt5RYLJFM7t1Z/t7VxVePcKu/194p8dHRUWTMdxs1LfH8Uc0IvMsPUUcfkH2dNchlsJVo54rQLs0aK6uHnIb25XywunnmtNHx5rPnrzlutcJzuRwAqIqwtoup7OjpTGEPEgv3y2EVERkRASIito71VVu8YkZKujLnsW+/NXJqsusDq/vK/HI4rPFcLteaZhTcsWpjY7nn+2xHdN3aKEDQVBXBGCIgMlQkcYRCIMt69O3vj7x1AueLh/7y4byuAAHyXC6HiETEhahVKzc3myPDR8aPYm8y/aAUPCntNVy36QdNz3OafgBsqC/zqzNHxo+Fr+cTf3jvKgQNzgUR4blz5/YdSMQ5azRcI9r+41eOnx4xJKp3N2oLG4Un5ToiJBPm2GBHf1/Eqzv/urLzwcV5Rk0hlFbU/g/UYjHGfN9zfRga6Jk43nNi8GBbPEKKAoDk+du79hfL2zPXNx7mt42QgoxJ+X/hv1+tv8S5iAhY+2pjeeV+JBJpi4ZNQyMCe88p2FXXqesqNyO6lPQNBQD+C1Fl4Lfj+TndAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTA5LTIxVDE1OjEzOjM5KzAyOjAwpCQipAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0wOS0yMVQxNToxMzozOSswMjowMNV5mhgAAAAASUVORK5CYII=


pkgId: 912b30bb514bf69ffba5b60e458d0d3ce9de14874558c5ca1a62c63f4c40ab73
name: python-aiida-raspa
arch: src
version: 2.0.0
epoch: 0
release: 1
summary: AiiDA plugin for RASPA code
url: https://pypi.org/project/aiida-raspa/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiida-raspa-2.0.0-1.src.rpm
checksum_type: sha256
description:
  ![Build Status](https://github.com/lsmo-epfl/aiida-raspa/actions/workflows/ci.yml/badge.svg)
  [![PyPI version](https://badge.fury.io/py/aiida-raspa.svg)](https://badge.fury.io/py/aiida-raspa)

  | Plugin | AiiDA | Python |
  |-|-|-|
  | `2.0.0` | ![Compatibility for v1.2][AiiDA v2.0] |  [![PyPI pyversions](https://img.shields.io/pypi/pyversions/aiida-quantumespresso.svg)](https://pypi.org/project/aiida-quantumespresso) |
  | `1.2.0` | ![Compatibility for v1.2][AiiDA v1.2] |  ![PyPI pyversions](https://img.shields.io/badge/python-3.7%20%7C%203.8%20%7C%203.9-blue) |


  [AiiDA](http://www.aiida.net/) plugin for [RASPA2](https://github.com/iRASPA/RASPA2).

  Designed to work with with RASPA 2.0.37 or later.
  Latest tests run for RASPA 2.0.47.


  The documentation for this package can be found on [Read the Docs](https://aiida-raspa.readthedocs.io/en/latest/).


  If you use ``pip``, you can install it as:
  ```
  pip install aiida-raspa
  ```

  If you want to install the plugin in an editable mode, run:
  ```
  git clone https://github.com/lsmo-epfl/aiida-raspa
  cd aiida-raspa
  pip install -e .  # Also installs aiida, if missing (but not postgres/rabbitmq).
  ```


  See `examples` folder for complete examples of setting up a calculation or a work chain.


  ```shell
  cd examples/simple_calculations
  verdi run example_base.py <code_label> --submit          # Submit example calculation.
  verdi process list -a -p1                                # Check status of calculation.
  ```


  ```shell
  cd examples/workchains
  verdi run example_base_restart_timeout.py <code_label>  # Submit test calculation.
  verdi process list -a -p1                                # Check status of the work chain.
  ```


  MIT


  This work is supported by:
  * the [MARVEL National Centre for Competency in Research](http://nccr-marvel.ch) funded by the [Swiss National Science Foundation](http://www.snf.ch/en);
  * the [MaX European Centre of Excellence](http://www.max-centre.eu/) funded by the Horizon 2020 EINFRA-5 program, Grant No. 676598;
  * the [swissuniversities P-5 project "Materials Cloud"](https://www.materialscloud.org/swissuniversities).

  <img src="miscellaneous/logos/MARVEL.png" alt="MARVEL" style="padding:10px;" width="150"/>
  <img src="miscellaneous/logos/MaX.png" alt="MaX" style="padding:10px;" width="250"/>
  <img src="miscellaneous/logos/swissuniversities.png" alt="swissuniversities" style="padding:10px;" width="250"/>


  [AiiDA v1.2]: https://img.shields.io/badge/AiiDA->=1.4.4,<2.0.0-007ec6.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAhCAYAAABTERJSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAFhgAABYYBG6Yz4AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAUbSURBVFiFzZhrbFRVEMd%2Fc%2B5uu6UUbIFC%2FUAUVEQCLbQJBIiBDyiImJiIhmohYNCkqJAQxASLF8tDgYRHBLXRhIcKNtFEhVDgAxBJqgmVh4JEKg3EIn2QYqBlt917xg%2BFss%2ByaDHOtzsz5z%2B%2FuZl7ztmF%2F5HJvxVQN6cPYX8%2FPLnOmsvNAvqfwuib%2FbNIk9cQeQnLcKRL5xLIV%2Fic9eJeunjPYbRs4FjQSpTB3aS1IpRKeeOOewajy%2FKKEO8Q0DuVdKy8IqsbPulxGHUfCBBu%2BwUYGuFuBTK7wQnht6PEbf4tlRomVRjCbXNjQEB0AyrFQOL5ENIJm7dTLZE6DPJCnEtFZVXDLny%2B4Sjv0PmmYu1ZdUek9RiMgoDmJ8V0L7XJqsZ3UW8YsBOwEeHeeFce7jEYXBy0m9m4BbXqSj2%2Bxnkg26MCVrN6DEZcwggtd8pTFx%2Fh3B9B50YLaFOPwXQKUt0tBLegtSomfBlfY13PwijbEnhztGzgJsK5h9W9qeWwBqjvyhB2iBs1Qz0AU974DciRGO8CVN8AJhAeMAdA3KbrKEtvxhsI%2B9emWiJlGBEU680Cfk%2BSsVqXZvcFYGXjF8ABVJ%2BTNfVXehyms1zzn1gmIOxLEB6E31%2FWBe5rnCarmo7elf7dJEeaLh80GasliI5F6Q9cAz1GY1OJVNDxTzQTw7iY%2FHEZRQY7xqJ9RU2LFe%2FYqakdP911ha0XhjjiTVAkDwgatWfCGeYocx8M3glG8g8EXhSrLrHnEFJ5Ymow%2FkhIYv6ttYUW1iFmEqqxdVoUs9FmsDYSqmtmJh3Cl1%2BVtl2s7owDUdocR5bceiyoSivGTT5vzpbzL1uoBpmcAAQgW7ArnKD9ng9rc%2BNgrobSNwpSkkhcRN%2BvmXLjIsDovYHHEfmsYFygPAnIDEQrQPzJYCOaLHLUfIt7Oq0LJn9fxkSgNCb1qEIQ5UKgT%2Fs6gJmVOOroJhQBXVqw118QtWLdyUxEP45sUpSzqP7RDdFYMyB9UReMiF1MzPwoUqHt8hjGFFeP5wZAbZ%2F0%2BcAtAAcji6LeSq%2FMYiAvSsdw3GtrfVSVFUBbIhwRWYR7yOcr%2FBi%2FB1MSJZ16JlgH1AGM3EO2QnmMyrSbTSiACgFBv4yCUapZkt9qwWVL7aeOyHvArJjm8%2Fz9BhdI4XcZgz2%2FvRALosjsk1ODOyMcJn9%2FYI6IrkS5vxMGdUwou2YKfyVqJpn5t9aNs3gbQMbdbkxnGdsr4bTHm2AxWo9yNZK4PXR3uzhAh%2BM0AZejnCrGdy0UvJxl0oMKgWSLR%2B1LH2aE9ViejiFs%2BXn6bTjng3MlIhJ1I1TkuLdg6OcAbD7Xx%2Bc3y9TrWAiSHqVkbZ2v9ilCo6s4AjwZCzFyD9mOL305nV9aonvsQeT2L0gVk4OwOJqXXVRW7naaxswDKVdlYLyMXAnntteYmws2xcVVZzq%2BtHPAooQggmJkc6TLSusOiL4RKgwzzYU1iFQgiUBA1H7E8yPau%2BZl9P7AblVNebtHqTgxLfRqrNvZWjsHZFuqMqKcDWdlFjF7UGvX8Jn24DyEAykJwNcdg0OvJ4p5pQ9tV6SMlP4A0PNh8aYze1ArROyUNTNouy8tNF3Rt0CSXb6bRFl4%2FIfQzNMjaE9WwpYOWQnOdEF%2BTdJNO0iFh7%2BI0kfORzQZb6P2kymS9oTxzBiM9rUqLWr1WE5G6ODhycQd%2FUnNVeMbcH68hYkGycNoUNWc8fxaxfwhDbHpfwM5oeTY7rUX8QAAAABJRU5ErkJggg%3D%3D

  [AiiDA v2.0]: https://img.shields.io/badge/AiiDA->=2.0.0,<3.0.0-007ec6.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAhCAYAAABTERJSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAFhgAABYYBG6Yz4AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAUbSURBVFiFzZhrbFRVEMd%2Fc%2B5uu6UUbIFC%2FUAUVEQCLbQJBIiBDyiImJiIhmohYNCkqJAQxASLF8tDgYRHBLXRhIcKNtFEhVDgAxBJqgmVh4JEKg3EIn2QYqBlt917xg%2BFss%2ByaDHOtzsz5z%2B%2FuZl7ztmF%2F5HJvxVQN6cPYX8%2FPLnOmsvNAvqfwuib%2FbNIk9cQeQnLcKRL5xLIV%2Fic9eJeunjPYbRs4FjQSpTB3aS1IpRKeeOOewajy%2FKKEO8Q0DuVdKy8IqsbPulxGHUfCBBu%2BwUYGuFuBTK7wQnht6PEbf4tlRomVRjCbXNjQEB0AyrFQOL5ENIJm7dTLZE6DPJCnEtFZVXDLny%2B4Sjv0PmmYu1ZdUek9RiMgoDmJ8V0L7XJqsZ3UW8YsBOwEeHeeFce7jEYXBy0m9m4BbXqSj2%2Bxnkg26MCVrN6DEZcwggtd8pTFx%2Fh3B9B50YLaFOPwXQKUt0tBLegtSomfBlfY13PwijbEnhztGzgJsK5h9W9qeWwBqjvyhB2iBs1Qz0AU974DciRGO8CVN8AJhAeMAdA3KbrKEtvxhsI%2B9emWiJlGBEU680Cfk%2BSsVqXZvcFYGXjF8ABVJ%2BTNfVXehyms1zzn1gmIOxLEB6E31%2FWBe5rnCarmo7elf7dJEeaLh80GasliI5F6Q9cAz1GY1OJVNDxTzQTw7iY%2FHEZRQY7xqJ9RU2LFe%2FYqakdP911ha0XhjjiTVAkDwgatWfCGeYocx8M3glG8g8EXhSrLrHnEFJ5Ymow%2FkhIYv6ttYUW1iFmEqqxdVoUs9FmsDYSqmtmJh3Cl1%2BVtl2s7owDUdocR5bceiyoSivGTT5vzpbzL1uoBpmcAAQgW7ArnKD9ng9rc%2BNgrobSNwpSkkhcRN%2BvmXLjIsDovYHHEfmsYFygPAnIDEQrQPzJYCOaLHLUfIt7Oq0LJn9fxkSgNCb1qEIQ5UKgT%2Fs6gJmVOOroJhQBXVqw118QtWLdyUxEP45sUpSzqP7RDdFYMyB9UReMiF1MzPwoUqHt8hjGFFeP5wZAbZ%2F0%2BcAtAAcji6LeSq%2FMYiAvSsdw3GtrfVSVFUBbIhwRWYR7yOcr%2FBi%2FB1MSJZ16JlgH1AGM3EO2QnmMyrSbTSiACgFBv4yCUapZkt9qwWVL7aeOyHvArJjm8%2Fz9BhdI4XcZgz2%2FvRALosjsk1ODOyMcJn9%2FYI6IrkS5vxMGdUwou2YKfyVqJpn5t9aNs3gbQMbdbkxnGdsr4bTHm2AxWo9yNZK4PXR3uzhAh%2BM0AZejnCrGdy0UvJxl0oMKgWSLR%2B1LH2aE9ViejiFs%2BXn6bTjng3MlIhJ1I1TkuLdg6OcAbD7Xx%2Bc3y9TrWAiSHqVkbZ2v9ilCo6s4AjwZCzFyD9mOL305nV9aonvsQeT2L0gVk4OwOJqXXVRW7naaxswDKVdlYLyMXAnntteYmws2xcVVZzq%2BtHPAooQggmJkc6TLSusOiL4RKgwzzYU1iFQgiUBA1H7E8yPau%2BZl9P7AblVNebtHqTgxLfRqrNvZWjsHZFuqMqKcDWdlFjF7UGvX8Jn24DyEAykJwNcdg0OvJ4p5pQ9tV6SMlP4A0PNh8aYze1ArROyUNTNouy8tNF3Rt0CSXb6bRFl4%2FIfQzNMjaE9WwpYOWQnOdEF%2BTdJNO0iFh7%2BI0kfORzQZb6P2kymS9oTxzBiM9rUqLWr1WE5G6ODhycQd%2FUnNVeMbcH68hYkGycNoUNWc8fxaxfwhDbHpfwM5oeTY7rUX8QAAAABJRU5ErkJggg%3D%3D


pkgId: b07b928278ebcc6e2d6858adc4633b899f57b0a69f1cdd61b0c893b17655936a
name: python-aiida-shell
arch: src
version: 0.8.0
epoch: 0
release: 1
summary: AiiDA plugin that makes running shell commands easy.
url: https://pypi.org/project/aiida-shell/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiida-shell-0.8.0-1.src.rpm
checksum_type: sha256
description:
  <div style="text-align: center;">
      <img src="docs/source/_static/logo-text.svg" style="width:100%" alt="aiida-shell"/>
  </div>

  [![PyPI version](https://badge.fury.io/py/aiida-shell.svg)](https://badge.fury.io/py/aiida-shell)
  [![PyPI pyversions](https://img.shields.io/pypi/pyversions/aiida-shell.svg)](https://pypi.python.org/pypi/aiida-shell)
  [![CI](https://github.com/sphuber/aiida-shell/workflows/ci/badge.svg)](https://github.com/sphuber/aiida-shell/actions/workflows/ci.yml)

  AiiDA plugin that makes running shell commands easy.
  Run any shell executable without writing a dedicated plugin or parser.



  Please refer to the [online documentation](https://aiida-shell.readthedocs.io/) for a complete guide.


pkgId: e78356e0417483b9b2ec68263bf1c6e5364541edd9cbe894e1e46d6f0e1144eb
name: python-aiida-test-cache
arch: src
version: 0.0.1
epoch: 0
release: 1
summary: A pytest plugin to simplify testing of AiiDA workflows
url: https://aiida-testing.readthedocs.io/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiida-test-cache-0.0.1-1.src.rpm
checksum_type: sha256
description:
  [![Build Status](https://github.com/aiidateam/aiida-test-cache/actions/workflows/ci.yml/badge.svg)](https://github.com/aiidateam/aiida-test-cache/actions)
  [![Docs status](https://readthedocs.org/projects/aiida-testing/badge)](https://aiida-testing.readthedocs.io/)
  [![PyPI version](https://badge.fury.io/py/aiida-test-cache.svg)](https://badge.fury.io/py/aiida-test-cache)
  [![GitHub license](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/aiidateam/aiida-test-cache/blob/main/LICENSE)



  A pytest plugin to simplify testing of AiiDA plugins. This package implements two ways of running an AiiDA calculation in tests:
  - `mock_code`: Implements a caching layer at the level of the executable called by an AiiDA calculation. This tests the input generation and output parsing, which is useful when testing calculation and parser plugins.
  - `archive_cache`: Implements an automatic archive creation and loading, to enable AiiDA - level caching in tests. This circumvents the input generation / output parsing, making it suitable for testing higher-level workflows.

  For more information, see the [documentation](https://aiida-testing.readthedocs.io/).


pkgId: a7213c47a3373d30c20ffdef39ad8ed857da0274be14b4886ad85c77e61fbcfd
name: python-aiida-vasp
arch: src
version: 4.0.0
epoch: 0
release: 1
summary: AiiDA plugin for running VASP calculations and workflows.
url: https://pypi.org/project/aiida-vasp/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiida-vasp-4.0.0-1.src.rpm
checksum_type: sha256
description:
  | Release |  [![PyPI](https://img.shields.io/pypi/v/aiida-vasp)](https://pypi.org/project/aiida-vasp/) | [![PyPI](https://img.shields.io/pypi/status/aiida-vasp )](https://pypi.org/project/aiida-vasp/)|
  |:--------|:------ |:----|
  | Build   | [![Coverage](https://codecov.io/gh/espenfl/aiida-vasp/branch/master/graph/badge.svg)](https://codecov.io/gh/espenfl/aiida-vasp)| [![Docs](https://readthedocs.org/projects/aiida-vasp-plugin/badge/?version=latest)](http://aiida-vasp-plugin.readthedocs.io/en/latest/?badge=latest)  |
  | Stats  | [![Dowloads](https://img.shields.io/pypi/dm/aiida-vasp)](https://pypi.org/project/aiida-vasp/) | [![Commits]( https://img.shields.io/github/commit-activity/m/aiida-vasp/aiida-vasp)](https://github.com/aiida-vasp/aiida-vasp/commits/develop) |


  This is a plugin to [AiiDA] to run calculations with the ab-initio program [VASP].

  Please have a look at the [AiiDA-VASP documentation] for instructions on how to install and use the plugin.



  % Keep this comment as it is used for including these steps in the install section of the docs.
  % It includes everything past the next line.
  % Start installation description

  1. If you are already using [AiiDA], simply activate the virtual environment associated with it, here assumed to be located in `~/env/aiida-vasp`:

     ```
     $ source ~/env/aiida-vasp/bin/activate
     ```

  2. Otherwise, set up a new virtual environment:

     ```
     $ python -m venv ~/env/aiida-vasp
     ```

  3. And then enable the newly installed virtual environment:

     ```
     $ source ~/env/aiida-vasp/bin/activate
     ```

  4. Install the [AiiDA-VASP] plugin (and [AiiDA] if that is not already installed):

     ```
     $ (aiida-vasp) pip install aiida-vasp
     ```

  > If you need to install the compatibility release of [AiiDA-VASP] which works with [AiiDA] 1.6.4 you should instead install the plugin
  > using `pip install aiida-vasp=2.2`, but this is not recommended and only mentioned for legacy support. For the legacy version you
  > also most likely have to run `reentry scan -r aiida` after installing the plugin.

  This will automatically install the [AiiDA] python package(s) as well as any other dependencies of the plugin and register all the plugin classes with [AiiDA].

  Please consider that [AiiDA] have prerequisite that needs to be installed and ensured working. The steps above will not take care of this for you. Please consult [AiiDA prerequisites] and follow the instructions therein.

  % End installation description



  % Start support description

  The development, maintenance and use of this plugin is considered a community effort. In order to facilitate for the community to contribute,
  we have established a [space on Matrix] that users can use to communicate. We encourage users to help each other. In addition,
  the development team is present in the space and users are free to ask.
  First consult the documentation of both [AiiDA-VASP documentation] and [AiiDA documentation] and also consider that the developers are
  not paid for this work. Please respect potential lead times in getting answers and be polite.

  % End support description

  [aiida]: https://www.aiida.net
  [aiida documentation]: http://aiida-core.readthedocs.io/en/latest/
  [aiida prerequisites]: https://aiida-core.readthedocs.io/en/latest/install/prerequisites.html
  [aiida-vasp]: https://github.com/aiida-vasp/aiida-vasp
  [aiida-vasp documentation]: https://aiida-vasp-plugin.readthedocs.io/en/latest/
  [space on matrix]: https://matrix.to/#/#aiida-vasp:matrix.org
  [vasp]: https://www.vasp.at


pkgId: 93192c7fe93fae4fdc14e466c74e52370f4ccdc2586363fbc216f3206cde453d
name: python-aiida-workgraph
arch: src
version: 0.4.7
epoch: 0
release: 1
summary: Design flexible node-based workflow for AiiDA calculation.
url: https://pypi.org/project/aiida-workgraph/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiida-workgraph-0.4.7-1.src.rpm
checksum_type: sha256
description:
  [![PyPI version](https://badge.fury.io/py/aiida-workgraph.svg)](https://badge.fury.io/py/aiida-workgraph)
  [![Unit test](https://github.com/aiidateam/aiida-workgraph/actions/workflows/ci.yaml/badge.svg)](https://github.com/aiidateam/aiida-workgraph/actions/workflows/ci.yaml)
  [![codecov](https://codecov.io/gh/aiidateam/aiida-workgraph/branch/main/graph/badge.svg)](https://codecov.io/gh/aiidateam/aiida-workgraph)
  [![Docs status](https://readthedocs.org/projects/aiida-workgraph/badge)](http://aiida-workgraph.readthedocs.io/)

  Efficiently design and manage flexible workflows with AiiDA, featuring an interactive GUI, checkpoints, provenance tracking, error-resistant, and remote execution capabilities.





  ```console
      pip install aiida-workgraph
  ```

  To install the latest version from source, first clone the repository and then install using `pip`:

  ```console
  git clone https://github.com/aiidateam/aiida-workgraph
  cd aiida-workgraph
  pip install -e .
  ```



  Explore the comprehensive [documentation](https://aiida-workgraph.readthedocs.io/en/latest/) to discover all the features and capabilities of AiiDA Workgraph.


  Visit the [Workgraph Collections repository](https://github.com/superstar54/workgraph-collections) to see demonstrations of how to utilize AiiDA Workgraph for different computational codes.


  Suppose we want to calculate ```(x + y) * z ``` in two steps. First, add `x` and `y`, then multiply the result with `z`.

  ```python
  from aiida_workgraph import WorkGraph, task


  @task.calcfunction
  def add(x, y):
      return x + y


  @task.calcfunction
  def multiply(x, y):
      return x*y


  wg = WorkGraph("test_add_multiply")
  wg.add_task(add, name="add1")
  wg.add_task(multiply, name="multiply1")
  wg.add_link(wg.tasks["add1"].outputs["result"], wg.tasks["multiply1"].inputs["x"])

  ```

  Prepare inputs and submit the workflow:

  ```python
  from aiida import load_profile

  load_profile()

  wg.submit(inputs = {"add1": {"x": 2, "y": 3}, "multiply1": {"y": 4}}, wait=True)
  print("Result of multiply1 is", wg.tasks["multiply1"].outputs[0].value)
  ```

  To use the web ui, first install the web ui package:
  ```console
  pip install aiida-workgraph-web-ui
  ```
  Then, start the web app with the following command:
  ```console

  workgraph web start
  ```

  Then visit the page http://127.0.0.1:8000/workgraph, you should find a `first_workflow` WorkGraph, click the pk and view the WorkGraph.

  <img src="docs/source/_static/images/first-workflow.png" />


  One can also generate the node graph from the process:
  ```console
  verdi node generate pk
  ```

  <img src="docs/source/_static/images/add_multiply.png"/>





  To contribute to this repository, please enable pre-commit so the code in commits are conform to the standards.
  ```console
  pip install -e .[tests,pre-commit]
  pre-commit install
  ```


  [MIT](http://opensource.org/licenses/MIT)


pkgId: ee02034f9d50219b87d80929c8b5ea9c37762a601167817a7cf3463012fa7bd8
name: python-aiida-workgraph-web-ui
arch: src
version: 0.1.0
epoch: 0
release: 1
summary: Design flexible node-based workflow for AiiDA calculation.
url: https://pypi.org/project/aiida-workgraph-web-ui/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiida-workgraph-web-ui-0.1.0-1.src.rpm
checksum_type: sha256
description:
  [![PyPI version](https://badge.fury.io/py/aiida-workgraph-web-ui.svg)](https://badge.fury.io/py/aiida-workgraph-web-ui)
  [![Docs status](https://readthedocs.org/projects/aiida-workgraph-web-ui/badge)](http://aiida-workgraph-web-ui.readthedocs.io/)
  [![Unit test](https://github.com/aiidateam/aiida-workgraph-web-ui/actions/workflows/ci.yml/badge.svg)](https://github.com/aiidateam/aiida-workgraph-web-ui/actions/workflows/ci.yml)


  Web UI to visualize and manage the AiiDA WorkGraph.


  Use `rete-kit` to create the frontend, using `react`

  ```console
  npm i -g rete-kit
  rete-kit frontend
  ```

  ```console
  npm start
  ```


  Build frontend application so that it generates static files (HTML, CSS, JavaScript, etc.).
  ```console
  npm run build
  ```
  This typically creates a build directory with all the static files needed to deploy the frontend.


  Now, ensure these static files are included in the Python package. The [tool.setuptools.package_data] in the pyproject.toml should be set to include these files.

  ```toml
  [tool.setuptools.package_data]
  your_package_name = ["path/to/frontend/build/*"]
  ```


  Use `FastAPI`

  The documentation page is `http://localhost:8000/docs`.


pkgId: ad95a783a31984d51ea7745d1c0aaafdb0e8af7246c1f6393f50ac30f5f8bb31
name: python-aiida-zeopp
arch: src
version: 2.0.0
epoch: 0
release: 1
summary: AiiDA plugin for zeo++
url: https://pypi.org/project/aiida-zeopp/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiida-zeopp-2.0.0-1.src.rpm
checksum_type: sha256
description:
  type         NetworkCalculation
  pk           88
  uuid         deb63433-4dcd-4ca1-9165-cb97877496b3
  label        aiida_zeopp example calculation
  description  Converts .cif to .cssr format, computes surface area, pore volume and channels
  ctime        2018-11-19 09:12:55.259776+00:00
  mtime        2018-11-19 09:15:15.708275+00:00
  computer     [1] localhost


pkgId: 8b1ff14eb4ba7d8bf20d677bccde91a2897ade99db7b3ee2709bae6728d0d96d
name: python-aiidalab
arch: src
version: 24.9.0
epoch: 0
release: 1
summary: Implements core functions of AiiDAlab.
url: https://github.com/aiidalab/aiidalab
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiidalab-24.9.0-1.src.rpm
checksum_type: sha256
description:
  [![Documentation Status](https://readthedocs.org/projects/aiidalab/badge/)](https://aiidalab.readthedocs.io/)
  [![codecov](https://codecov.io/gh/aiidalab/aiidalab/branch/main/graph/badge.svg)](https://codecov.io/gh/aiidalab/aiidalab)


  The `aiidalab` package manages [AiiDAlab](https://www.aiidalab.net) applications within the [AiiDAlab Docker stack](https://github.com/aiidalab/aiidalab-docker-stack). It contains API and CLI interface to install/uninstall apps from the [AiiDAlab App registry](https://aiidalab.github.io/aiidalab-registry/) or directly from Git repositories. It also contains the code for building the App Registry, although the actual registry data are housed and deployed in a [aiidalab-registry repository](https://github.com/aiidalab/aiidalab-registry).



  Install latest version from pypi:
  ```
  pip install aiidalab
  ```

  or from the `conda-forge` conda channel:
  ```console
  conda install -c conda-forge aiidalab
  ```


  The documentation can be found on the [following web page](https://aiidalab.readthedocs.io).



  To create a new release, clone the repository, install development dependencies with `pip install -e '.[dev]'`, and then execute `bumpver update`.
  This will:

    1. Create a tagged release with bumped version and push it to the repository.
    2. Trigger a GitHub actions workflow that creates a GitHub release.

  Additional notes:

    - Use the `--dry` option to preview the release change.
    - The release tag (e.g. a/b/rc) is determined from the last release.
      Use the `--tag` option to switch the release tag.



  MIT



  Users of AiiDAlab are kindly asked to cite the following publication in their own work:

  A. V. Yakutovich et al., Comp. Mat. Sci. 188, 110165 (2021).
  [DOI:10.1016/j.commatsci.2020.110165](https://doi.org/10.1016/j.commatsci.2020.110165)



  aiidalab@materialscloud.org



  This work is supported by the [MARVEL National Centre for Competency in Research](<https://nccr-marvel.ch>)
  funded by the [Swiss National Science Foundation](<https://www.snf.ch/en>), as well as by the [MaX
  European Centre of Excellence](https://www.max-centre.eu/) funded by the Horizon 2020 EINFRA-5 program,
  Grant No. 676598.

  ![MARVEL](miscellaneous/logos/MARVEL.png)
  ![MaX](miscellaneous/logos/MaX.png)


pkgId: a21c7daa5687f7eb3aa22628555b65657439098ed72542373b0e3992f26ba044
name: python-aiidalab-launch
arch: src
version: 2024.1020
epoch: 0
release: 1
summary: Tool to launch AiiDAlab on a local workstation.
url: https://github.com/aiidalab/aiidalab-launch
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiidalab-launch-2024.1020-1.src.rpm
checksum_type: sha256
description:
  [![PyPI version](https://badge.fury.io/py/aiidalab-launch.svg)](https://badge.fury.io/py/aiidalab-launch)
  [![PyPI pyversions](https://img.shields.io/pypi/pyversions/aiidalab-launch.svg)](https://pypi.python.org/pypi/aiidalab-launch/)
  ![Build status](https://github.com/aiidalab/aiidalab-launch/actions/workflows/ci.yml/badge.svg?branch=main)
  [![codecov](https://codecov.io/gh/aiidalab/aiidalab-launch/branch/main/graph/badge.svg?token=7FOZR20CHS)](https://codecov.io/gh/aiidalab/aiidalab-launch)
  [![Commit Activity](https://img.shields.io/github/commit-activity/m/aiidalab/aiidalab-launch.svg)](https://github.com/aiidalab/aiidalab-launch/pulse)

  AiiDAlab Launch makes it easy to run [AiiDAlab](https://www.aiidalab.net) on your own workstation or laptop.



  To use AiiDAlab launch you will have to

  1. [Install Docker on your workstation or laptop.](https://docs.docker.com/get-docker/) (you can also use Podman, [see below](README.md#using-podman))
  2. Install AiiDAlab launch with [pipx](https://pypa.github.io/pipx/installation/) (**recommended**):

     ```console
     pipx install aiidalab-launch
     ```

     _Or directly with pip (`pip install aiidalab-launch`)._

  3. Start AiiDAlab with

      ```console
      aiidalab-launch start
      ```
  4. Follow the instructions on screen to open AiiDAlab in the browser.

  See `aiidalab-launch --help` for detailed help.



  You can inspect the status of all configured AiiDAlab profiles with:

  ```console
  aiidalab-launch status
  ```



  The tool allows to manage multiple profiles, e.g., with different home directories or ports.
  See `aiidalab-launch profile --help` for more information.



  By default AiiDAlab will store all of its data in a [Docker volume](https://docs.docker.com/storage/volumes/) defined in the profile configuration option `home_mount`.
  You can also provide an absolute path to the AiiDAlab home directory on the host system (so called [bind mount](https://docs.docker.com/storage/bind-mounts/)).
  If this directory does not exist, AiiDAlab launch will try to create it on startup.

  Additional volumes to be mounted to the the AiiDAlab container can be specified via the `extra_mounts` option using the ["docker-compose "short syntax"](https://docs.docker.com/compose/compose-file/compose-file-v3/#volumes) `source:target:mode`.
  `source` is either a volume name or an absolute path to an existing directory on the host system,
  `target` is a path within the AiiDAlab container,
  and mode is either `rw` for read-write volume (default) or `ro` for read-only volume.

  As an example, here's how you can mount a quantum chemistry program installed on the host system to make it accessible to AiiDA inside the AiiDAlab container:
  ```python
  extra_mounts = ["/path/to/qcprogram:/opt/qcprogram:ro",]
  ```

  Finally, AiiDAlab launch will create a dedicated volume for the local conda environment (`~/.conda`).
  That is because some conda packages are not compatible with non-linux file systems, meaning that they cannot be installed if the home directory was, for example, bound to a Mac OS-X file system on the host.



  Please see [here](ssh-forward.md) for instructions on how to run AiiDAlab on a remote machine and then forward it to your local terminal.



  This package follows the Python compatibility and deprecation schedule specified by [NEP 29](https://numpy.org/neps/nep-0029-deprecation_policy.html).



  You should be able to use Podman as as a drop-in replacement for Docker, with just a little extra setup. The following was tested on Fedora 39 which comes with Podman pre-installed.

  ```console
  systemctl --user enable podman.socket
  systemctl --user start podman.socket
  systemctl --user status podman.socket
  export DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock
  ```





  To develop this package, first clone it and then install the development dependencies with `pip install -e '.[dev]'`.
  We recommend to install the [pre-commit](https://pre-commit.com/) hooks to avoid unnecessary iterations when pushing new changes.
  To install the pre-commit hooks, switch into the repository root directly and execute:
  ```console
  pre-commit install
  ```



  To run the automated tests suite, clone the repository, install test dependencies with `pip install -e '.[tests]'`, and then execute tests with

  ```console
  pytest
  ```
  for all standard tests, and
  ```console
  pytest --slow
  ```
  to run the full test suite, including tests that will start docker instances and may take multiple minutes.

  The continuous integration workflow will run all tests, including the "slow" ones.

  Note: On Mac OS-X you may have to override the standard temporary base directory to successfully run all tests (e.g. `pytest --basetemp=$HOME/tmp`) since the default base directory may not be accessible to the Docker runtime.



  To create a new release, clone the repository, install development dependencies with `pip install -e '.[dev]'`, and then execute `bumpver update`.
  This will:

    1. Create a tagged release with bumped version and push it to the repository.
    2. Trigger a GitHub actions workflow that creates a GitHub release.

  Additional notes:

    - Use the `--dry` option to preview the release change.
    - The release should be created directly on the `main` branch,
      and as such you need special permissions for writing to it.
    - The release tag (e.g. a/b/rc) is determined from the last release.
      Use the `--tag` option to switch the release tag.



  * **Carl Simon Adorf (EPFL)** - [@csadorf](https://github.com/csadorf)
  * [AiiDAlab team](https://www.aiidalab.net/about/)

  See also the list of [contributors](https://github.com/aiidalab/aiidalab-launch/contributors).




  Users of AiiDAlab are kindly asked to cite the following publication in their own work:

  A. V. Yakutovich et al., Comp. Mat. Sci. 188, 110165 (2021).
  [DOI:10.1016/j.commatsci.2020.110165](https://doi.org/10.1016/j.commatsci.2020.110165)



  aiidalab@materialscloud.org



  Contributions in any form are very welcome.
  Please see [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines.



  Copyright (c) 2021 Carl Simon Adorf (EPFL)

  All rights reserved.

  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files (the "Software"), to deal
  in the Software without restriction, including without limitation the rights
  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  copies of the Software, and to permit persons to whom the Software is
  furnished to do so, subject to the following conditions:

  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.

  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  SOFTWARE.



  This work is supported by the
  [MARVEL National Centre for Competency in Research](<https://nccr-marvel.ch>) funded by the [Swiss National Science Foundation](<https://www.snf.ch/en>),
  the MARKETPLACE project funded by [Horizon 2020](https://ec.europa.eu/programmes/horizon2020/) under the H2020-NMBP-25-2017 call (Grant No. 760173),
  as well as by the [MaX
  European Centre of Excellence](<http://www.max-centre.eu/>) funded by the Horizon 2020 EINFRA-5 program,
  Grant No. 676598.

  <div style="text-align:center">
   <img src="logos/MARVEL.png" alt="MARVEL" height="75px">
   <img src="logos/MaX.png" alt="MaX" height="75px">
   <img src="logos/MarketPlace.png" alt="MarketPlace" height="75px">
  </div>


pkgId: 0f8735b508d6fc7b7fe4e18c9bce2058b47eb7ec59bcac32e223f8ae897c8e3e
name: python-aiidalab-widgets-base
arch: src
version: 2.2.2
epoch: 0
release: 1
summary: Reusable widgets for AiiDAlab applications.
url: https://github.com/aiidalab/aiidalab-widgets-base
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiidalab-widgets-base-2.2.2-1.src.rpm
checksum_type: sha256
description:
  [![Documentation Status](https://readthedocs.org/projects/aiidalab-widgets-base/badge/?version=latest)](https://aiidalab-widgets-base.readthedocs.io/en/latest/?badge=latest)
  [![codecov](https://codecov.io/gh/aiidalab/aiidalab-widgets-base/branch/master/graph/badge.svg)](https://codecov.io/gh/aiidalab/aiidalab-widgets-base)



  [AiiDAlab](https://www.aiidalab.net/) applications typically involve some of following steps:

   * Prepare the input for a calculation (e.g. an atomic structure).
   * Select computational resources and submit a calculation to AiiDA.
   * Monitor a running calculation.
   * Find and analyze the results of a calculation.

  The AiiDAlab widgets help with these common tasks.



  Hosted on [aiidalab-widgets-base.readthedocs.io](https://aiidalab-widgets-base.readthedocs.io).



  To create a new release, clone the repository, install development dependencies with `pip install -e '.[dev]'`, and then execute `bumpver update [--major|--minor|--patch] [--tag-num --tag [alpha|beta|rc]]`.
  This will:

    1. Create a tagged release with bumped version and push it to the repository.
    2. Trigger a GitHub actions workflow that creates a GitHub release and publishes it on PyPI.

  Additional notes:

    - Use the `--dry` option to preview the release change.
    - The release tag (e.g. a/b/rc) is determined from the last release.
      Use the `--tag` option to switch the release tag.
    - This package follows [semantic versioning](https://semver.org/).



  MIT



  Users of AiiDAlab are kindly asked to cite the following publication in their own work:

  A. V. Yakutovich et al., Comp. Mat. Sci. 188, 110165 (2021).
  [DOI:10.1016/j.commatsci.2020.110165](https://doi.org/10.1016/j.commatsci.2020.110165)



  aiidalab@materialscloud.org



  This work is supported by the [MARVEL National Centre for Competency in Research](<https://nccr-marvel.ch>)
  funded by the [Swiss National Science Foundation](<https://www.snf.ch/en>), as well as by the [MaX
  European Centre of Excellence](<http://www.max-centre.eu/>) funded by the Horizon 2020 EINFRA-5 program,
  Grant No. 676598.

  ![MARVEL](miscellaneous/logos/MARVEL.png)
  ![MaX](miscellaneous/logos/MaX.png)


pkgId: 4d6a5891ba25bf02113597d54ecb651c39be35ec841b571657b8501924944eb1
name: python-aij
arch: src
version: 1.2.10
epoch: 0
release: 1
summary: AI Journalist
url: https://www.codesapien.be/aij/
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aij-1.2.10-1.src.rpm
checksum_type: sha256
description:
  The goal of this project is to develop an AI journalist that can observe and evaluate various factors, including facial expressions, tone of speech, and objects in the background of a reporter, to generate relevant questions and categorize speeches. The AI journalist will use machine learning algorithms to analyze and optimize its observations and generate the best possible questions to further the conversation.



  -   Develop a machine learning algorithm that can observe and evaluate various factors, including facial expressions, tone of speech, and objects in the background of a reporter.
  -   Create a system that can categorize speeches and generate relevant questions to further the conversation.
  -   Optimize the system for accuracy and efficiency.



  The project will be divided into several stages:

  1.  Data Collection: We will collect data on various news reports, interviews, and conversations to create a comprehensive database of speech and facial expressions. This database will be used as the basis for the machine learning algorithm.

  2.  Machine Learning: We will develop a machine learning algorithm that can observe and evaluate various factors, including facial expressions, tone of speech, and objects in the background of a reporter. The algorithm will be trained on a large dataset of speech and facial expressions and will be optimized for accuracy and speed.

  3.  Categorization and Question Generation: We will create a system that can categorize speeches and generate relevant questions to further the conversation. This system will use the observations made by the machine learning algorithm to categorize speeches and generate questions based on the content and context of the conversation. What, where, what time, who, why, how?

  4.  Testing and Validation: We will test and validate the system on a variety of news reports, interviews, and conversations, ensuring that the system can accurately categorize speeches and generate relevant questions. We will also measure the overall efficiency and usability of the system.




  -   A machine learning algorithm that can observe and evaluate various factors, including facial expressions, tone of speech, and objects in the background of a reporter.
  -   A system that can categorize speeches and generate relevant questions to further the conversation.
  -   A report detailing the performance of the system, including accuracy and efficiency.



  This project will provide a powerful solution for generating relevant questions and categorizing speeches in various news reports, interviews, and conversations. The incorporation of machine learning algorithms into the observation and question generation process will allow for more efficient and effective journalism, while the system can also be further optimized and extended to various applications, providing new opportunities for research and development in the field of machine learning and journalism.



  Developing an AI Journalist is a complex project that requires expertise in natural language processing, machine learning, and computer vision. However, there are some features that could be coded within a week:

  1.  Face emotion recognition: Implementing a basic face emotion recognition system that can detect and categorize facial expressions of a person in a video can be done within a week.

  2.  Speech categorization: Implementing a system that can categorize speeches based on their content and context can be done within a week. For example, categorizing speeches as political, social, or economic.

  3.  Object detection: Implementing a basic object detection system that can detect and categorize objects in the background of a video can be done within a week.

  4.  Simple question generation: Implementing a basic question generation system that can generate questions based on the content and context of the speech can be done within a week.


  However, it's important to note that these features are just the building blocks of an AI Journalist and that the development of such a complex system would require a longer period of time, extensive research, and testing.





  The AI journalist model should be able to process natural language effectively, and understand the nuances of grammar, syntax, and vocabulary.

  To demonstrate how Python can be used for natural language processing, here is some example code using the Natural Language Toolkit (NLTK) library:

  ```python
  import nltk


  text = "Natural language processing is a challenging field, but it can also be very rewarding."
  sentences = nltk.sent_tokenize(text)
  words = nltk.word_tokenize(text)

  print(sentences)


  print(words)



  pos_tags = nltk.pos_tag(words)

  print(pos_tags)



  ner_tags = nltk.ne_chunk(pos_tags)

  print(ner_tags)

















  ```

  This code demonstrates how to tokenize a piece of text into sentences and words, and then perform parts of speech tagging and named entity recognition on those words using NLTK. These are just a few of the many natural language processing techniques that can be performed using Python and NLTK.



  The AI journalist model should have access to a wide knowledge base, which it can use to inform its writing and research.

  The implementation of a knowledge base for an AI journalist model is a complex task that requires a lot of planning and development. However, here is an example of how you could load a pre-existing knowledge base into your Python code using a simple dictionary:

  > Python Code

  ```python

  knowledge_base = {
      "artificial intelligence": ["AI", "machine learning", "neural networks"],
      "climate change": ["global warming", "greenhouse gases", "carbon emissions"],
      "COVID-19": ["coronavirus", "pandemic", "vaccine"],
      
  }


  def get_related_terms(topic):
      if topic in knowledge_base:
          return knowledge_base[topic]
      else:
          return []


  print(get_related_terms("artificial intelligence"))


  print(get_related_terms("COVID-19"))


  print(get_related_terms("space exploration"))

  ```

  This example demonstrates how you could use a simple dictionary to represent a knowledge base, and then define a function that returns related terms for a given topic. In a real AI journalist model, the knowledge base would likely be much more sophisticated and would incorporate data from a wide range of sources. Additionally, the function would likely be more complex and could use advanced natural language processing techniques to extract relevant information from text.

  Gathering data from a wide range of resources can be a challenging task, but there are many Python libraries and tools that can help simplify the process. Here's an example of how you could gather data from several different sources using Python:

  > Python Code

  ```python
  import requests
  from bs4 import BeautifulSoup


  sources = [
      "https://www.nytimes.com",
      "https://www.bbc.com",
      "https://www.theguardian.com",
      
  ]


  for source in sources:
      
      response = requests.get(source)
      soup = BeautifulSoup(response.content, "html.parser")

      
      headlines = soup.find_all("h2", class_="headline")
      article_links = soup.find_all("a", class_="article-link")

      
      print(f"Headlines from {source}:")
      for headline in headlines:
          print("- " + headline.get_text().strip())

      print(f"Article links from {source}:")
      for article_link in article_links:
          print("- " + article_link.get("href"))

  ```

  This example uses the Requests library to make HTTP requests to several different news websites, and the BeautifulSoup library to extract relevant data from the HTML content of each page. Specifically, it extracts all the headlines and article links from each page and prints them out to the console.

  In a real AI journalist model, you would likely want to extract much more detailed and structured data, and you would likely use a combination of web scraping, APIs, and other data sources to gather the necessary information.



  The AI journalist model should be able to analyze large amounts of data quickly and accurately, and identify patterns and trends that are relevant to the story.

  Analyzing large amounts of data quickly and accurately is a key requirement for an AI journalist model. Here's an example of how you could use Python and the Pandas library to load, analyze, and visualize a dataset:

  > Python Code

  ```python
  import pandas as pd
  import matplotlib.pyplot as plt


  df = pd.read_csv("example_dataset.csv")


  print(df.head())


  print("Average value:", df["value"].mean())
  print("Minimum value:", df["value"].min())
  print("Maximum value:", df["value"].max())


  grouped_df = df.groupby("category").mean()


  print(grouped_df)


  grouped_df.plot(kind="bar")
  plt.title("Average Value by Category")
  plt.xlabel("Category")
  plt.ylabel("Average Value")
  plt.show()
  ```

  In this example, we load a dataset into a Pandas DataFrame and use various methods to analyze and visualize the data. Specifically, we print the first few rows of the dataset, calculate some basic statistics, group the data by category and calculate the mean value for each category, and create a bar chart of the grouped data.

  In a real AI journalist model, you would likely want to use more sophisticated data analysis techniques, such as machine learning algorithms or statistical modeling, to extract insights from large and complex datasets. However, the basic techniques demonstrated here can provide a solid foundation for more advanced analysis.

  Here's an example dataset in CSV format that you can use with the code example I provided earlier:

  > CSV Data

  ```csv
  category,value
  A,10
  B,15
  A,12
  C,8
  B,17
  C,6
  A,9
  B,20
  C,12
  ```

  This dataset contains three categories (A, B, and C) and a corresponding value for each category. You can save this dataset as a CSV file named `example_dataset.csv` and use the code example I provided earlier to load, analyze, and visualize the data.



  The AI journalist model should have the ability to verify facts and sources, and ensure the accuracy of the information it presents.

  Fact checking is an important skill for any journalist, and it's especially critical for an AI journalist model that relies on automated data gathering and processing. Here's an example of how you could use Python and the FactCheck API to verify the accuracy of a piece of information:

  > Python Code

  ```python
  import requests


  claim = "The earth is flat."


  response = requests.get("https://factchecktools.googleapis.com/v1alpha1/claims:search", params={"query": claim})


  if response.json()["claims"]:
      
      verdict = response.json()["claims"][0]["claimReview"][0]["textualRating"]
      explanation = response.json()["claims"][0]["claimReview"][0]["textualRatingExplanation"]
      print(f"The claim '{claim}' is {verdict}. {explanation}")
  else:
      
      print(f"Could not verify the claim '{claim}'.")

  ```

  In this example, we use the FactCheck API to check the accuracy of a claim ("The earth is flat."). We make a request to the API and check if the response contains any results. If there are results, we print the verdict and explanation provided by the API. If there are no results, we print a message indicating that the claim could not be verified.

  In a real AI journalist model, you would likely want to use a combination of fact-checking techniques, such as manual research and verification, automated fact-checking tools, and crowd-sourced verification platforms, to ensure the accuracy of the information you present.



  The AI journalist model should be able to write well, using proper grammar, syntax, and vocabulary, and should be able to adapt its writing style to the audience and context.

  Writing skills are essential for an AI journalist model, as the model needs to be able to write articles that are engaging, informative, and accurate. Here's an example of how you could use Python and the GPT-3 API to generate a news article on a given topic:

  > Python Code

  ```python
  import openai
  openai.api_key = "your_api_key"


  prompt = "Write a news article about the new Apple iPhone release."


  model = "text-davinci-002"
  temperature = 0.5
  max_tokens = 1024


  response = openai.Completion.create(
      engine=model,
      prompt=prompt,
      temperature=temperature,
      max_tokens=max_tokens,
      n=1,
      stop=None,
      timeout=30,
  )


  print(response.choices[0].text)
  ```

  In this example, we use the GPT-3 API to generate a news article about the new Apple iPhone release. We define a prompt for the article and set the parameters for the text generation, such as the model to use, the temperature of the sampling process, and the maximum number of tokens in the generated text. We then use the OpenAI API client to generate the article and print the result.

  Of course, this is just a simple example, and in a real AI journalist model, you would need to incorporate many other features, such as content planning, topic research, style adaptation, and fact checking, to ensure that the generated articles are of high quality and relevance.



  The AI journalist model should be able to convey different tones and voices depending on the context, whether it is a news story, opinion piece, or feature article.

  AI journalist model that can convey different tones and voices depending on the context requires complex natural language processing (NLP) techniques and algorithms.

  Firstly we will ned provide a general guidance and resources that may help you to develop such a model using Python.



  Start by exploring existing NLP libraries and frameworks in Python, such as NLTK, spaCy, and transformers. These libraries provide various NLP tools and techniques, such as tokenization, named entity recognition, sentiment analysis, and language modeling, that can be used to analyze and generate text.

  The code below uses NLTK library to tokenize the input text into individual words and then apply stemming to reduce each word to its root form.

  > Python Code

  ```python
  import nltk
  from nltk.tokenize import word_tokenize
  from nltk.stem import PorterStemmer


  text = "Natural Language Processing is a complex field, but it has many useful applications."


  tokens = word_tokenize(text)


  stemmer = PorterStemmer()


  stemmed_tokens = [stemmer.stem(token) for token in tokens]


  print("Original text:", text)
  print("Tokenized text:", tokens)
  print("Stemmed text:", stemmed_tokens)
  ```

  > Terminal Output:

  ```console
  Original text: Natural Language Processing is a complex field, but it has many useful applications.
  Tokenized text: ['Natural', 'Language', 'Processing', 'is', 'a', 'complex', 'field', ',', 'but', 'it', 'has', 'many', 'useful', 'applications', '.']
  Stemmed text: ['natur', 'languag', 'process', 'is', 'a', 'complex', 'field', ',', 'but', 'it', 'ha', 'mani', 'use', 'applic', '.']
  ```



  For tone and voice modeling, you can use language modeling techniques, such as GPT (Generative Pre-trained Transformer) or BERT (Bidirectional Encoder Representations from Transformers), which have been shown to perform well in various natural language generation tasks. These models can be fine-tuned on a specific task or domain, such as news article writing, to generate text that follows a specific tone or voice.

  This code uses spaCy library to apply named entity recognition (NER) to the input text and extract the entities and their labels.

  > Python Code

  ```python
  import spacy


  nlp = spacy.load("en_core_web_sm")


  text = "Bill Gates is the founder of Microsoft Corporation, which is based in Redmond, Washington."


  doc = nlp(text)


  entities = [(ent.text, ent.label_) for ent in doc.ents]


  print("Original text:", text)
  print("Named entities:", entities)
  ```

  > Terminal Output:

  ```console
  Original text: Bill Gates is the founder of Microsoft Corporation, which is based in Redmond, Washington.
  Named entities: [('Bill Gates', 'PERSON'), ('Microsoft Corporation', 'ORG'), ('Redmond', 'GPE'), ('Washington', 'GPE')]
  ```



  You can also use style transfer techniques, such as neural style transfer or disentangled representation learning, to transfer the style or voice of one text to another. For example, you can transfer the style of a news article to an opinion piece or feature article.

  > Python Code:

  ```python
  from transformers import pipeline


  classifier = pipeline("sentiment-analysis")


  text = "I love this new phone, it's amazing!"


  result = classifier(text)


  print("Original text:", text)
  print("Sentiment analysis result:", result)
  ```



  This code uses the `SentimentIntensityAnalyzer` class from NLTK library to analyze the sentiment of the given text. The `polarity_scores` method returns a dictionary of sentiment scores, including the negative, neutral, positive, and compound scores.

  > Python Code:

  ```python
  import nltk
  from nltk.sentiment import SentimentIntensityAnalyzer


  sia = SentimentIntensityAnalyzer()


  text = "I love this new phone, it's amazing!"


  scores = sia.polarity_scores(text)


  print(scores)
  ```

  > Terminal Output:

  ```json
  {'neg': 0.0, 'neu': 0.403, 'pos': 0.597, 'compound': 0.5859}
  ```


  Finally, it's important to have a large and diverse training dataset that includes various examples of different tones and voices in different contexts. You can collect and preprocess data from various sources, such as news websites, social media platforms, and blogs.

  This code uses requests library to download the HTML content of webpages, and then uses BeautifulSoup library to extract the text content from the HTML. It then applies some basic preprocessing steps to remove URLs, special characters, and digits, and convert the text to lowercase. Finally, it combines the preprocessed data from different sources into a single training dataset.

  > Python Code:

  ```python
  import requests
  from bs4 import BeautifulSoup
  import re


  def extract_text(url):
      response = requests.get(url)
      soup = BeautifulSoup(response.content, "html.parser")
      text = ""
      for p in soup.find_all("p"):
          text += p.get_text()
      return text


  news_urls = [
      "https://www.nytimes.com/",
      "https://www.washingtonpost.com/",
      "https://www.bbc.com/news",
  ]
  news_text = []
  for url in news_urls:
      news_text.append(extract_text(url))


  social_media_urls = [
      "https://www.twitter.com/",
      "https://www.facebook.com/",
      "https://www.instagram.com/",
  ]
  social_media_text = []
  for url in social_media_urls:
      social_media_text.append(extract_text(url))


  blog_urls = [
      "https://www.medium.com/",
      "https://www.wordpress.com/",
      "https://www.blogger.com/",
  ]
  blog_text = []
  for url in blog_urls:
      blog_text.append(extract_text(url))


  def preprocess(text):
      
      text = re.sub(r"http\S+", "", text)
      
      text = re.sub(r"[^a-zA-Z\s]", "", text)
      
      text = text.lower()
      return text

  news_text = [preprocess(text) for text in news_text]
  social_media_text = [preprocess(text) for text in social_media_text]
  blog_text = [preprocess(text) for text in blog_text]


  training_data = news_text + social_media_text + blog_text
  ```

  > Terminal Output:

  [TODO]: Add an example output here ..



  Here's an example of a full-stack working Python program for face emotion recognition using OpenCV and Keras.

  First, you'll need to install the necessary libraries:

  ```console
  pip install opencv-python
  pip install keras
  ```

  Then, you can use the following code to create a basic face emotion recognition system:

  ```python
  import cv2
  import numpy as np
  from keras.models import load_model


  model = load_model('model.h5')


  emotions = ['Angry', 'Disgust', 'Fear', 'Happy', 'Neutral', 'Sad', 'Surprise']


  def detect_face(frame):
      
      gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
      
      face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
      
      faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5)
      
      if len(faces) == 0:
          return None, None
      
      largest_face = faces[0]
      for face in faces:
          if face[2] * face[3] > largest_face[2] * largest_face[3]:
              largest_face = face
      
      x, y, w, h = largest_face
      face_roi = gray[y:y+h, x:x+w]
      
      face_roi = cv2.resize(face_roi, (48, 48))
      
      return face_roi, largest_face


  def predict_emotion(face):
      
      face = face.reshape(1, 48, 48, 1)
      
      face = face / 255.0
      
      predictions = model.predict(face)
      
      return emotions[np.argmax(predictions)]


  cap = cv2.VideoCapture(0)

  while True:
      
      ret, frame = cap.read()
      
      face, coords = detect_face(frame)
      
      if face is not None:
          emotion = predict_emotion(face)
          x, y, w, h = coords
          cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
          cv2.putText(frame, emotion, (x, y-10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)
      
      cv2.imshow('Face Emotion Recognition', frame)
      
      if cv2.waitKey(1) & 0xFF == ord('q'):
          break


  cap.release()
  cv2.destroyAllWindows()
  ```

  This program uses OpenCV to capture video frames from the camera and detect faces using the Haar Cascade classifier for face detection. Once a face is detected, the program extracts the face region, resizes it to 48x48 pixels, and uses a pre-trained Keras model to predict the emotion label. The predicted emotion label is then drawn on the frame along with a rectangle around the detected face.

  Note that in this example, the pre-trained Keras model is assumed to be saved in a file named 'model.h5'. You will need to train your own model or find a pre-trained model that you can use for this task.

  Also, keep in mind that this is a very basic example of a face emotion recognition system, and it may not be accurate or robust enough for real-world applications. There are many factors that can affect the performance of such a system, including lighting conditions, camera angles, and the diversity of facial expressions. Nonetheless, this should give you a starting point to build your own face emotion recognition system.




  The AI journalist model should be programmed to adhere to ethical standards in journalism, such as impartiality, accuracy, and transparency.




  The AI journalist model should have the ability to learn and improve over time, based on feedback from editors and readers.





  The AI journalist model should have a user-friendly interface that allows journalists to input topics and parameters, and receive output in a format that is easy to use and understand.





  The AI journalist model should be designed to work collaboratively with human journalists, leveraging the strengths of both to produce high-quality journalism.

rpm_license:
  Copyright (c) 2016 The Python Packaging Authority (PyPA)  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


pkgId: e73a59463bcbdf6f24fcbb88801b1f612354e9e2e94abe928309bc45bb02acb3
name: python-aijson-core
arch: src
version: 0.2.0
epoch: 0
release: 1
summary: Low-code config language for AI pipelines
url: https://pypi.org/project/aijson-core/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aijson-core-0.2.0-1.src.rpm
checksum_type: sha256
description:
  <div align="center">

  <a href="https://aijson.com">
    <img src="https://github.com/user-attachments/assets/85ed4004-92d3-4e68-a6f1-1198e0474db6" width="200" />
  </a>

  <h1>AI JSON / AI YAML</h1>

  [![discord](https://img.shields.io/badge/discord-7289da)](https://discord.gg/8rVxacHn9H)
  [![docs](https://img.shields.io/badge/docs-orange)](https://aijson.com/docs)

  Low-Code Config Language for AI Pipelines
  </div>

  [demo.webm](https://github.com/user-attachments/assets/a20fedab-30e6-4459-9fe5-5c5a21a52c9f)


pkgId: 202c4d4897537d88c5fcad591c68a750627b4bced53303905e6140f7317ab498
name: python-aikasilta
arch: src
version: 2022.7.24
epoch: 0
release: 1
summary: Time bridge (Finnish: aikasilta) - experimental reporting bridge from the Nineties into right now.
url: https://git.sr.ht/~sthagen/aikasilta
rpm_license: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aikasilta-2022.7.24-1.src.rpm
checksum_type: sha256
description:
  Time bridge (Finnish: aikasilta) - experimental reporting bridge from the Nineties into right now.

  [License: MIT](https://github.com/sthagen/aikasilta/blob/default/LICENSE)

  [![version](https://img.shields.io/pypi/v/aikasilta.svg?style=flat)](https://pypi.python.org/pypi/aikasilta/)
  [![downloads](https://pepy.tech/badge/aikasilta/month)](https://pepy.tech/project/aikasilta)
  [![wheel](https://img.shields.io/pypi/wheel/aikasilta.svg?style=flat)](https://pypi.python.org/pypi/aikasilta/)
  [![supported-versions](https://img.shields.io/pypi/pyversions/aikasilta.svg?style=flat)](https://pypi.python.org/pypi/aikasilta/)
  [![supported-implementations](https://img.shields.io/pypi/implementation/aikasilta.svg?style=flat)](https://pypi.python.org/pypi/aikasilta/)



  User and developer [documentation of aikasilta](https://codes.dilettant.life/docs/aikasilta).



  Feature requests and bug reports are bested entered in the [todos of aikasilta](https://todo.sr.ht/~sthagen/aikasilta).



  The primary source repository of [aikasilta is at sourcehut](https://git.sr.ht/~sthagen/aikasilta)
  a collection of tools useful for software development.



  Experimental.

  **Note**: The default branch is `default`.


pkgId: f6a9a4b79907ef095f02d365148f3bc6c0333a7a3def913335a71375237d976f
name: python-aikido_zen
arch: src
version: 1.0.15
epoch: 0
release: 1
summary: Aikido Zen for Python
url: https://www.aikido.dev/runtime/firewall
rpm_license: AGPL-3.0-or-later
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aikido_zen-1.0.15-1.src.rpm
checksum_type: sha256
description:
  ![Aikido Zen for Python 3](https://raw.githubusercontent.com/AikidoSec/firewall-python/main/docs/banner.svg)


  [![Codecov](https://img.shields.io/codecov/c/github/AikidoSec/firewall-python?style=flat-square&token=AJK9LU35GY)](https://app.codecov.io/gh/aikidosec/firewall-python)
  [![PyPI Package](https://img.shields.io/pypi/v/aikido_zen?style=flat-square)](https://pypi.org/project/aikido_zen/)
  ![Code Style : Black](https://img.shields.io/badge/code%20style-black-black?style=flat-square)
  [![Unit tests](https://github.com/AikidoSec/firewall-python/actions/workflows/unit-test.yml/badge.svg)](https://github.com/AikidoSec/firewall-python/actions/workflows/unit-test.yml)
  [![End to end tests](https://github.com/AikidoSec/firewall-python/actions/workflows/end2end.yml/badge.svg)](https://github.com/AikidoSec/firewall-python/actions/workflows/end2end.yml)

  Zen, your in-app firewall for peace of mind– at runtime.

  Zen is an embedded Web Application Firewall that autonomously protects your Python apps against common and critical attacks.

  Zen protects your Python apps by preventing user input containing dangerous strings, which allow SQL injections. It runs on the same server as your Python app for simple [installation](https://pypi.org/project/aikido_zen/#installation) and zero maintenance.



  Zen will autonomously protect your Python applications from the inside against:

  * 🛡️ [NoSQL injection attacks](https://www.aikido.dev/blog/web-application-security-vulnerabilities)
  * 🛡️ [SQL injection attacks]([https://www.aikido.dev/blog/web-application-security-vulnerabilities](https://owasp.org/www-community/attacks/SQL_Injection))
  * 🛡️ [Command injection attacks](https://owasp.org/www-community/attacks/Command_Injection)
  * 🛡️ [Path traversal attacks](https://owasp.org/www-community/attacks/Path_Traversal)
  * 🛡️ [Server-side request forgery (SSRF)](./docs/ssrf.md)

  Zen operates autonomously on the same server as your Python app to:

  * ✅ Secure your app like a classic web application firewall (WAF), but with none of the infrastructure or cost.



  Zen for Python 3 is compatible with:



  * ✅ [Django](docs/django.md)
  * ✅ [Flask](docs/flask.md)
  * ✅ [Quart](docs/quart.md)
  * ✅ [Starlette](docs/starlette.md)



  * ✅ [Gunicorn](docs/gunicorn.md)
  * ✅ [uWSGI](docs/uwsgi.md)


  * ✅ [`mysqlclient`](https://pypi.org/project/mysqlclient/) ^1.5
  * ✅ [`PyMySQL`](https://pypi.org/project/PyMySQL/) ^0.9
  * ✅ [`pymongo`](https://pypi.org/project/pymongo/) ^3.10
  * ✅ [`psycopg2`](https://pypi.org/project/psycopg2) ^2.9.2
  * ✅ [`psycopg`](https://pypi.org/project/psycopg) ^3.1
  * ✅ [`asyncpg`](https://pypi.org/project/asyncpg) ^0.27
  * ✅ [`motor`](https://pypi.org/project/motor/) (See `pymongo` version)



  > Aikido is your no nonsense application security platform. One central system that scans your source code & cloud, shows you what vulnerabilities matter, and how to fix them - fast. So you can get back to building.

  Zen is a new product by Aikido. Built for developers to level up their security. While Aikido scans, get Zen for always-on protection.

  You can use some of Zen’s features without Aikido, of course. Peace of mind is just a few lines of code away.

  But you will get the most value by reporting your data to Aikido.

  You will need an Aikido account and a token to report events to Aikido. If you don't have an account, you can [sign up for free](https://app.aikido.dev/login).

  Here's how:
  * [Log in to your Aikido account](https://app.aikido.dev/login).
  * Go to [Zen](https://app.aikido.dev/runtime/services).
  * Go to apps.
  * Click on **Add app**.
  * Choose a name for your app.
  * Click **Generate token**.
  * Copy the token.
  * Set the token as an environment variable, `AIKIDO_TOKEN`



  By default, Zen will only detect and report attacks to Aikido.

  To block requests, set the `AIKIDO_BLOCKING` environment variable to `true`.

  See [Reporting to Aikido](#reporting-to-your-aikido-security-dashboard) to learn how to send events to Aikido.


  The following table summarizes the performance of both a typical SQL Query and a typical NoSQL Query with and without the Zen, measured in milliseconds :
  | Operation | Avg. time w/o Zen | Avg. time w/ Zen | Delta | Delta in % |
  | --------- | ---------------------- | --------------------- | ----- | ---------- |
  | SQL Query | 1.222 ms | 1.257 ms | +0.035 ms | +3% |
  | NoSQL Query | 1.090 ms | 1.110 ms | +0.020 ms | +2% |

  See [benchmarks](benchmarks/) folder for more.



  Our bug bounty program is public and can be found by all registered Intigriti users [here](https://app.intigriti.com/researcher/programs/aikido/aikidoruntime)



  See [CONTRIBUTING.md](.github/CONTRIBUTING.md) for more information.



  See [CODE_OF_CONDUCT.md](.github/CODE_OF_CONDUCT.md) for more information.



  See [SECURITY.md](.github/SECURITY.md) for more information.


pkgId: f1803cda63a9a4d09ff9352c98e72c4f6aacb39f16f5c2a8b19ef4df49b4e002
name: python-aikido_zen
arch: src
version: 1.0.16
epoch: 0
release: 1
summary: Aikido Zen for Python
url: https://www.aikido.dev/runtime/firewall
rpm_license: AGPL-3.0-or-later
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aikido_zen-1.0.16-1.src.rpm
checksum_type: sha256
description:
  ![Aikido Zen for Python 3](https://raw.githubusercontent.com/AikidoSec/firewall-python/main/docs/banner.svg)


  [![Codecov](https://img.shields.io/codecov/c/github/AikidoSec/firewall-python?style=flat-square&token=AJK9LU35GY)](https://app.codecov.io/gh/aikidosec/firewall-python)
  [![PyPI Package](https://img.shields.io/pypi/v/aikido_zen?style=flat-square)](https://pypi.org/project/aikido_zen/)
  ![Code Style : Black](https://img.shields.io/badge/code%20style-black-black?style=flat-square)
  [![Unit tests](https://github.com/AikidoSec/firewall-python/actions/workflows/unit-test.yml/badge.svg)](https://github.com/AikidoSec/firewall-python/actions/workflows/unit-test.yml)
  [![End to end tests](https://github.com/AikidoSec/firewall-python/actions/workflows/end2end.yml/badge.svg)](https://github.com/AikidoSec/firewall-python/actions/workflows/end2end.yml)

  Zen, your in-app firewall for peace of mind– at runtime.

  Zen is an embedded Web Application Firewall that autonomously protects your Python apps against common and critical attacks.

  Zen protects your Python apps by preventing user input containing dangerous strings, which allow SQL injections. It runs on the same server as your Python app for simple [installation](https://pypi.org/project/aikido_zen/#installation) and zero maintenance.



  Zen will autonomously protect your Python applications from the inside against:

  * 🛡️ [NoSQL injection attacks](https://www.aikido.dev/blog/web-application-security-vulnerabilities)
  * 🛡️ [SQL injection attacks](https://www.aikido.dev/blog/the-state-of-sql-injections)
  * 🛡️ [Command injection attacks](https://owasp.org/www-community/attacks/Command_Injection)
  * 🛡️ [Path traversal attacks](https://owasp.org/www-community/attacks/Path_Traversal)
  * 🛡️ [Server-side request forgery (SSRF)](./docs/ssrf.md)

  Zen operates autonomously on the same server as your Python app to:

  * ✅ Secure your app like a classic web application firewall (WAF), but with none of the infrastructure or cost.



  Zen for Python 3 is compatible with:



  * ✅ [Django](docs/django.md)
  * ✅ [Flask](docs/flask.md)
  * ✅ [Quart](docs/quart.md)
  * ✅ [Starlette](docs/starlette.md)



  * ✅ [Gunicorn](docs/gunicorn.md)
  * ✅ [uWSGI](docs/uwsgi.md)


  * ✅ [`mysqlclient`](https://pypi.org/project/mysqlclient/) ^1.5
  * ✅ [`PyMySQL`](https://pypi.org/project/PyMySQL/) ^0.9
  * ✅ [`pymongo`](https://pypi.org/project/pymongo/) ^3.10
  * ✅ [`psycopg2`](https://pypi.org/project/psycopg2) ^2.9.2
  * ✅ [`psycopg`](https://pypi.org/project/psycopg) ^3.1
  * ✅ [`asyncpg`](https://pypi.org/project/asyncpg) ^0.27
  * ✅ [`motor`](https://pypi.org/project/motor/) (See `pymongo` version)



  > Aikido is your no nonsense application security platform. One central system that scans your source code & cloud, shows you what vulnerabilities matter, and how to fix them - fast. So you can get back to building.

  Zen is a new product by Aikido. Built for developers to level up their security. While Aikido scans, get Zen for always-on protection.

  You can use some of Zen’s features without Aikido, of course. Peace of mind is just a few lines of code away.

  But you will get the most value by reporting your data to Aikido.

  You will need an Aikido account and a token to report events to Aikido. If you don't have an account, you can [sign up for free](https://app.aikido.dev/login).

  Here's how:
  * [Log in to your Aikido account](https://app.aikido.dev/login).
  * Go to [Zen](https://app.aikido.dev/runtime/services).
  * Go to apps.
  * Click on **Add app**.
  * Choose a name for your app.
  * Click **Generate token**.
  * Copy the token.
  * Set the token as an environment variable, `AIKIDO_TOKEN`



  By default, Zen will only detect and report attacks to Aikido.

  To block requests, set the `AIKIDO_BLOCKING` environment variable to `true`.

  See [Reporting to Aikido](#reporting-to-your-aikido-security-dashboard) to learn how to send events to Aikido.


  The following table summarizes the performance of both a typical SQL Query and a typical NoSQL Query with and without the Zen, measured in milliseconds :
  | Operation | Avg. time w/o Zen | Avg. time w/ Zen | Delta | Delta in % |
  | --------- | ---------------------- | --------------------- | ----- | ---------- |
  | SQL Query | 1.222 ms | 1.257 ms | +0.035 ms | +3% |
  | NoSQL Query | 1.090 ms | 1.110 ms | +0.020 ms | +2% |

  See [benchmarks](benchmarks/) folder for more.



  Our bug bounty program is public and can be found by all registered Intigriti users [here](https://app.intigriti.com/researcher/programs/aikido/aikidoruntime)



  See [CONTRIBUTING.md](.github/CONTRIBUTING.md) for more information.



  See [CODE_OF_CONDUCT.md](.github/CODE_OF_CONDUCT.md) for more information.



  See [SECURITY.md](.github/SECURITY.md) for more information.


pkgId: 31d245b1ba249672f5f4b654fc444b0787bed3e06db31c512b8861e5b849e558
name: python-aikido_zen
arch: src
version: 1.1.1
epoch: 0
release: 1
summary: Aikido Zen for Python
url: https://www.aikido.dev/runtime/firewall
rpm_license: AGPL-3.0-or-later
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aikido_zen-1.1.1-1.src.rpm
checksum_type: sha256
description:
  ![Aikido Zen for Python 3](https://raw.githubusercontent.com/AikidoSec/firewall-python/main/docs/banner.svg)


  [![Codecov](https://img.shields.io/codecov/c/github/AikidoSec/firewall-python?style=flat-square&token=AJK9LU35GY)](https://app.codecov.io/gh/aikidosec/firewall-python)
  [![PyPI Package](https://img.shields.io/pypi/v/aikido_zen?style=flat-square)](https://pypi.org/project/aikido_zen/)
  ![Code Style : Black](https://img.shields.io/badge/code%20style-black-black?style=flat-square)
  [![Unit tests](https://github.com/AikidoSec/firewall-python/actions/workflows/unit-test.yml/badge.svg)](https://github.com/AikidoSec/firewall-python/actions/workflows/unit-test.yml)
  [![End to end tests](https://github.com/AikidoSec/firewall-python/actions/workflows/end2end.yml/badge.svg)](https://github.com/AikidoSec/firewall-python/actions/workflows/end2end.yml)

  Zen, your in-app firewall for peace of mind– at runtime.

  Zen is an embedded Web Application Firewall that autonomously protects your Python apps against common and critical attacks.

  Zen protects your Python apps by preventing user input containing dangerous strings, which allow SQL injections. It runs on the same server as your Python app for simple [installation](https://pypi.org/project/aikido_zen/#installation) and zero maintenance.



  Zen will autonomously protect your Python applications from the inside against:

  * 🛡️ [NoSQL injection attacks](https://www.aikido.dev/blog/web-application-security-vulnerabilities)
  * 🛡️ [SQL injection attacks](https://www.aikido.dev/blog/the-state-of-sql-injections)
  * 🛡️ [Command injection attacks](https://owasp.org/www-community/attacks/Command_Injection)
  * 🛡️ [Path traversal attacks](https://owasp.org/www-community/attacks/Path_Traversal)
  * 🛡️ [Server-side request forgery (SSRF)](./docs/ssrf.md)

  Zen operates autonomously on the same server as your Python app to:

  * ✅ Secure your app like a classic web application firewall (WAF), but with none of the infrastructure or cost.



  Zen for Python 3 is compatible with:



  * ✅ [Django](docs/django.md)
  * ✅ [Flask](docs/flask.md)
  * ✅ [Quart](docs/quart.md)
  * ✅ [Starlette](docs/starlette.md)
  * ✅ [FastAPI](docs/starlette.md) (via Starlette)



  * ✅ [Gunicorn](docs/gunicorn.md)
  * ✅ [uWSGI](docs/uwsgi.md)


  * ✅ [`mysqlclient`](https://pypi.org/project/mysqlclient/) ^1.5
  * ✅ [`PyMySQL`](https://pypi.org/project/PyMySQL/) ^0.9
  * ✅ [`pymongo`](https://pypi.org/project/pymongo/) ^3.10
  * ✅ [`psycopg2`](https://pypi.org/project/psycopg2) ^2.9.2
  * ✅ [`psycopg`](https://pypi.org/project/psycopg) ^3.1
  * ✅ [`asyncpg`](https://pypi.org/project/asyncpg) ^0.27
  * ✅ [`motor`](https://pypi.org/project/motor/) (See `pymongo` version)



  > Aikido is your no nonsense application security platform. One central system that scans your source code & cloud, shows you what vulnerabilities matter, and how to fix them - fast. So you can get back to building.

  Zen is a new product by Aikido. Built for developers to level up their security. While Aikido scans, get Zen for always-on protection.

  You can use some of Zen’s features without Aikido, of course. Peace of mind is just a few lines of code away.

  But you will get the most value by reporting your data to Aikido.

  You will need an Aikido account and a token to report events to Aikido. If you don't have an account, you can [sign up for free](https://app.aikido.dev/login).

  Here's how:
  * [Log in to your Aikido account](https://app.aikido.dev/login).
  * Go to [Zen](https://app.aikido.dev/runtime/services).
  * Go to apps.
  * Click on **Add app**.
  * Choose a name for your app.
  * Click **Generate token**.
  * Copy the token.
  * Set the token as an environment variable, `AIKIDO_TOKEN`



  By default, Zen will only detect and report attacks to Aikido.

  To block requests, set the `AIKIDO_BLOCKING` environment variable to `true`.

  See [Reporting to Aikido](#reporting-to-your-aikido-security-dashboard) to learn how to send events to Aikido.


  The following table summarizes the performance of both a typical SQL Query and a typical NoSQL Query with and without the Zen, measured in milliseconds :
  | Operation | Avg. time w/o Zen | Avg. time w/ Zen | Delta | Delta in % |
  | --------- | ---------------------- | --------------------- | ----- | ---------- |
  | SQL Query | 1.222 ms | 1.257 ms | +0.035 ms | +3% |
  | NoSQL Query | 1.090 ms | 1.110 ms | +0.020 ms | +2% |

  See [benchmarks](benchmarks/) folder for more.



  Our bug bounty program is public and can be found by all registered Intigriti users [here](https://app.intigriti.com/researcher/programs/aikido/aikidoruntime)



  See [CONTRIBUTING.md](.github/CONTRIBUTING.md) for more information.



  See [CODE_OF_CONDUCT.md](.github/CODE_OF_CONDUCT.md) for more information.



  See [SECURITY.md](.github/SECURITY.md) for more information.


pkgId: fa43dc4661617fba32aa281d054fd8bfd998168dc67d770aea119f1114e007dd
name: python-ail-typo-squatting
arch: src
version: 2.7.4
epoch: 0
release: 1
summary: Generate list of domain name using Domain name permutation engine to feed AIL
url: https://github.com/typosquatter/ail-typo-squatting
rpm_license: BSD-2-Clause
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-ail-typo-squatting-2.7.4-1.src.rpm
checksum_type: sha256
description:
  ail-typo-squatting is a Python library to generate list of potential typo squatting domains with domain name permutation engine to feed AIL and other systems.

  The tool can be used as a stand-alone tool or to feed other systems.



  - Python 3.6+
  - [inflect](https://github.com/jaraco/inflect) library
  - [pyyaml](https://pyyaml.org/wiki/PyYAMLDocumentation)
  - [tldextract](https://github.com/john-kurkowski/tldextract)

  - [dnspython](https://github.com/rthalley/dnspython)





  ail-typo-squatting can be install with poetry. If you don't have poetry installed, you can do the following `curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python`.

  ```bash
  $ poetry install
  $ poetry shell
  $ cd ail-typo-squatting
  $ python typo.py -h
  ```



  ```bash
  $ pip3 install ail-typo-squatting
  ```



  ```bash
  dacru@dacru:~/git/ail-typo-squatting/bin$ python3 typo.py --help
  usage: typo.py [-h] [-v] [-dn DOMAINNAME [DOMAINNAME ...]] [-fdn FILEDOMAINNAME] [-o OUTPUT] [-fo FORMATOUTPUT] [-br] [-dnsr] [-dnsl] [-l LIMIT] [-var] [-ko] [-a] [-om] [-repe] [-repl] [-drepl] [-cho]
                 [-add] [-md] [-sd] [-vs] [-ada] [-hg] [-ahg] [-cm] [-hp] [-wt] [-wsld] [-at] [-sub] [-sp] [-cdd] [-addns] [-uddns] [-ns] [-combo] [-ca]

  optional arguments:
    -h, --help            show this help message and exit
    -v                    verbose, more display
    -dn DOMAINNAME [DOMAINNAME ...], --domainName DOMAINNAME [DOMAINNAME ...]
                          list of domain name
    -fdn FILEDOMAINNAME, --filedomainName FILEDOMAINNAME
                          file containing list of domain name
    -o OUTPUT, --output OUTPUT
                          path to ouput location
    -fo FORMATOUTPUT, --formatoutput FORMATOUTPUT
                          format for the output file, yara - regex - yaml - text. Default: text
    -br, --betterregex    Use retrie for faster regex
    -dnsr, --dnsresolving
                          resolve all variation of domain name to see if it's up or not
    -dnsl, --dnslimited   resolve all variation of domain name but keep only up domain in final result json
    -l LIMIT, --limit LIMIT
                          limit of variations for a domain name
    -var, --givevariations
                          give the algo that generate variations
    -ko, --keeporiginal   Keep in the result list the original domain name
    -a, --all             Use all algo
    -om, --omission       Leave out a letter of the domain name
    -repe, --repetition   Character Repeat
    -repl, --replacement  Character replacement
    -drepl, --doublereplacement
                          Double Character Replacement
    -cho, --changeorder   Change the order of letters in word
    -add, --addition      Add a character in the domain name
    -md, --missingdot     Delete a dot from the domain name
    -sd, --stripdash      Delete of a dash from the domain name
    -vs, --vowelswap      Swap vowels within the domain name
    -ada, --adddash       Add a dash between the first and last character in a string
    -hg, --homoglyph      One or more characters that look similar to another character but are different are called homogylphs
    -ahg, --all_homoglyph
                          generate all possible homoglyph permutations. Ex: circl.lu, e1rc1.lu
    -cm, --commonmisspelling
                          Change a word by is misspellings
    -hp, --homophones     Change word by an other who sound the same when spoken
    -wt, --wrongtld       Change the original top level domain to another
    -wsld, --wrongsld     Change the original second level domain to another
    -at, --addtld         Adding a tld before the original tld
    -sub, --subdomain     Insert a dot at varying positions to create subdomain
    -sp, --singularpluralize
                          Create by making a singular domain plural and vice versa
    -cdd, --changedotdash
                          Change dot to dash
    -addns, --adddynamicdns
                          Add dynamic dns at the end of the domain
    -uddns, --updatedynamicdns
                          Update dynamic dns warning list
    -ns, --numeralswap    Change a numbers to words and vice versa. Ex: circlone.lu, circl1.lu
    -combo                Combine multiple algo on a domain name
    -ca, --catchall       Combine with -dnsr. Generate a random string in front of the domain.

  ```



  1. Creation of variations for `ail-project.org` and `circl.lu`, using all algorithm.

  ```bash
  dacru@dacru:~/git/ail-typo-squatting/bin$ python3 typo.py -dn ail-project.org circl.lu -a -o .
  ```

  2. Creation of variations for a file who contains domain name, using character omission - subdomain - hyphenation.

  ```bash
  dacru@dacru:~/git/ail-typo-squatting/bin$ python3 typo.py -fdn domain.txt -co -sub -hyp -o . -fo yara
  ```

  3. Creation of variations for `ail-project.org` and `circl.lu`, using all algorithm and using dns resolution.

  ```bash
  dacru@dacru:~/git/ail-typo-squatting/bin$ python3 typo.py -dn ail-project.org circl.lu -a -dnsr -o .
  ```

  4. Creation of variations for `ail-project.org`  and give the algorithm that generate the variation (**only for text format**).

  ```bash
  dacru@dacru:~/git/ail-typo-squatting/bin$ python3 typo.py -dn ail-project.org -a -o - -var
  ```





  ```python
  from ail_typo_squatting import runAll
  import math

  resultList = list()
  domainList = ["google.com"]
  formatoutput = "yara"
  pathOutput = "."
  for domain in domainList:
      resultList = runAll(
          domain=domain,
          limit=math.inf,
          formatoutput=formatoutput,
          pathOutput=pathOutput,
          verbose=False,
          givevariations=False,
          keeporiginal=False
      )

      print(resultList)
      resultList = list()
  ```



  ```python
  from ail_typo_squatting import formatOutput, omission, subdomain, addDash
  import math

  resultList = list()
  domainList = ["google.com"]
  limit = math.inf
  formatoutput = "yara"
  pathOutput = "."
  for domain in domainList:
      resultList = omission(domain=domain, resultList=resultList, verbose=False, limit=limit, givevariations=False,  keeporiginal=False)

      resultList = subdomain(domain=domain, resultList=resultList, verbose=False, limit=limit, givevariations=False,  keeporiginal=False)

      resultList = addDash(domain=domain, resultList=resultList, verbose=False, limit=limit, givevariations=False,  keeporiginal=False)

      print(resultList)
      formatOutput(format=formatoutput, resultList=resultList, domain=domain, pathOutput=pathOutput, givevariations=False)

      resultList = list()
  ```



  There's **4 format** possible for the output file:

  - text
  - yara
  - regex
  - sigma

  For **Text** file, each line is a variation.

  ```
  ail-project.org
  il-project.org
  al-project.org
  ai-project.org
  ailproject.org
  ail-roject.org
  ail-poject.org
  ail-prject.org
  ail-proect.org
  ail-projct.org
  ail-projet.org
  ail-projec.org
  aail-project.org
  aiil-project.org
  ...
  ```

  For **Yara** file, each rule is a variation.

  ```
  rule ail-project_org {
      meta:
          domain = "ail-project.org"
      strings:
          $s0 = "ail-project.org"
          $s1 = "il-project.org"
          $s2 = "al-project.org"
          $s3 = "ai-project.org"
          $s4 = "ailproject.org"
          $s5 = "ail-roject.org"
          $s6 = "ail-poject.org"
          $s7 = "ail-prject.org"
          $s8 = "ail-proect.org"
          $s9 = "ail-projct.org"
          $s10 = "ail-projet.org"
          $s11 = "ail-projec.org"
      condition:
           any of ($s*)
  }
  ```

  For **Regex** file, each variations is transform into regex and concatenate with other to do only one big regex.

  ```
  ail\-project\.org|il\-project\.org|al\-project\.org|ai\-project\.org|ailproject\.org|ail\-roject\.org|ail\-poject\.org|ail\-prject\.org|ail\-proect\.org|ail\-projct\.org|ail\-projet\.org|ail\-projec\.org
  ```

  For **Sigma** file, each variations are list under `variations` key.

  ```
  title: ail-project.org
  variations:
  - ail-project.org
  - il-project.org
  - al-project.org
  - ai-project.org
  - ailproject.org
  - ail-roject.org
  - ail-poject.org
  - ail-prject.org
  - ail-proect.org
  - ail-projct.org
  - ail-projet.org
  - ail-projec.org
  ```



  In case DNS resolve is selected, an additional file will be created in JSON format

  each keys are variations and may have a field "ip" if the domain name have been resolved. The filed "NotExist" will be there each time with a Boolean value to determine if the domain is existing or not.

  ```json
  {
      "circl.lu": {
          "NotExist": false,
          "ip": [
              "185.194.93.14"
          ]
      },
      "ircl.lu": {
          "NotExist": true
      },
      "crcl.lu": {
          "NotExist": true
      },
      "cicl.lu": {
          "NotExist": true
      },
      "cirl.lu": {
          "NotExist": true
      },
      "circ.lu": {
          "NotExist": true
      },
      "ccircl.lu": {
          "NotExist": true
      },
      "ciircl.lu": {
          "NotExist": true
      },
      ...
  }
  ```



  | Algo               | Description                                                                                                                                                                                                                               |
  |:------------------ |:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | AddDash            | These typos are created by adding a dash between the first and last character in a string.                                                                                                                                                |
  | Addition           | These typos are created by add a characters in the domain name.                                                                                                                                                                           |
  | AddDynamicDns      | These typos are created by adding a dynamic dns at the end of the original domain.                                                                                                                                                        |
  | AddTld             | These typos are created by adding a tld before the right tld. Example: google.com becomes google.com.it                                                                                                                                   |
  | ChangeDotDash      | These typos are created by changing a dot to a dash.                                                                                                                                                                                      |
  | ChangeOrder        | These typos are created by changing the order of letters in the each part of the domain.                                                                                                                                                  |
  | Combo              | These typos are created by combining multiple algorithms. For example, circl.lu becomes cirl6.lu                                                                                                                                          |
  | CommonMisspelling  | These typos are created by changing a word by is misspelling. Over 8000 common misspellings from Wikipedia. For example, www.youtube.com becomes www.youtub.com and www.abseil.com becomes www.absail.com.                                |
  | Double Replacement | These typos are created by replacing identical, consecutive letters of the domain name.                                                                                                                                                   |
  | Homoglyph          | These typos are created by replacing characters to another character that look similar but are different.  An example is that the lower case l looks similar to the numeral one, e.g. l vs 1. For example, google.com becomes goog1e.com. |
  | Homophones         | These typos are created by changing word by an other who sound the same when spoken. Over 450 sets of words that sound the same when spoken. For example, www.base.com becomes www.bass.com.                                              |
  | MissingDot         | These typos are created by deleting a dot from the domain name.                                                                                                                                                                           |
  | NumeralSwap        | These typos are created by changing a number to words and vice versa. For example, circlone.lu becomes circl1.lu.                                                                                                                         |
  | Omission           | These typos are created by leaving out a letter of the domain name, one letter at a time.                                                                                                                                                 |
  | Repetition         | These typos are created by repeating a letter of the domain name.                                                                                                                                                                         |
  | Replacement        | These typos are created by replacing each letter of the domain name.                                                                                                                                                                      |
  | StripDash          | These typos are created by deleting a dash from the domain name.                                                                                                                                                                          |
  | SingularPluralize  | These typos are created by making a singular domain plural and vice versa.                                                                                                                                                                |
  | Subdomain          | These typos are created by placing a dot in the domain name in order to create subdomain. Example: google.com becomes goo.gle.com                                                                                                         |
  | VowelSwap          | These typos are created by swapping vowels within the domain name except for the first letter. For example, www.google.com becomes www.gaagle.com.                                                                                        |
  | WrongTld           | These typos are created by changing the original top level domain to another. For example, www.trademe.co.nz becomes www.trademe.co.mz and www.google.com becomes www.google.org Uses the 19 most common top level domains.               |
  | WrongSld           | These typos are created by changing the original second level domain to another. For example, www.trademe.co.uk becomes www.trademe.ac.uk and www.google.com will still be www.google.com .                                               |



  ![](./img/cef.png)

  The project has been co-funded by CEF-TC-2020-2 - 2020-EU-IA-0260 - JTAN - Joint Threat Analysis Network.


pkgId: 0fb25f9f4cf9e16058fa6e984643a4628ecfaa5127f2ff535a9ad333437406fb
name: python-ailabtools
arch: src
version: 0.0.64
epoch: 0
release: 1
summary: Common tools for Zalo AILab
url: https://lab.zalo.ai
rpm_license: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-ailabtools-0.0.64-1.src.rpm
checksum_type: sha256
description:
  [![PyPI version fury.io](https://badge.fury.io/py/ailabtools.svg)](https://pypi.python.org/pypi/ailabtools/)

  [![MIT license](https://img.shields.io/badge/License-MIT-blue.svg)](https://lbesson.mit-license.org/)

  [![PyPI pyversions](https://img.shields.io/pypi/pyversions/ailabtools.svg)](https://pypi.python.org/pypi/ailabtools/)

  Pip package tools for Deep learning task



  ```
  pip install ailabtools
  ```





  1. Clone project to folder `ailabtools`

  2. Go to `ailabtools` folder, install using `pip`:

      ```
      pip install .
      ```

      for editable package (for development process), run:

      ```
      pip install --editable .
      ```

  3. Check if package installed succesfully by running this python code:

      ```
      from ailabtools import common
      common.check()
      ```

      right output:

      ```
      >>> from ailabtools import common
      >>> common.check()
      AILab Server Check OK
      ```

      make sure that the output is `AILab Server Check OK` without any problems.

  4. Optional, check information of package:
      ```
      pip show ailabtools
      ```



  - Deployment branch: `master`.

  - Development branch: `develop`.

  - Contribution process steps:
      1. Checkout new branch.
      2. Add own module.
      3. Create pull request to branch `develop`.
      4. Waiting for pull request review.
      5. Pull request merged, ready for beta deployment.
      6. Stable, ready for `master` merge for offical deployment.



  Checkout `setup.py` for package information.



  Add module in `ailabtools` folder.



  Check wiki pages


pkgId: e9305cf52089e085b820d91d5d21dbc8c70e80fc36451bcf58775e410d66c28e
name: python-ailca
arch: src
version: 0.3.2
epoch: 0
release: 1
summary: Python package for chemical machine learning.
url: https://pypi.org/project/ailca/
rpm_license: UNKNOWN
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-ailca-0.3.2-1.src.rpm
checksum_type: sha256
description:
  Follow the instructions in [PyTorch Installation](https://pytorch.org/get-started/locally/) to install the PyTorch package on your environment.



  Many use a same package and module name, you could definitely do that. But this example package and its module's names are different: `example_pypi_package` and `examplepy`.
  Open `example_pypi_package` folder with Visual Studio Code, <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>F</kbd> (Windows / Linux) or <kbd>Cmd</kbd> + <kbd>Shift</kbd> + <kbd>F</kbd> (MacOS) to find all occurrences of both names and replace them with your package and module's names. Also remember to change the name of the folder **src/examplepy**.
  Simply and very roughly speaking, package name is used in `pip install <PACKAGENAME>` and module name is used in `import <MODULENAME>`. Both names should consist of lowercase basic letters (a-z). They may have underscores (`_`) if you really need them. Hyphen-minus (`-`) should not be used.
  You'll also need to make sure the URL "https://pypi.org/project/example-pypi-package/" (replace `example-pypi-package` by your package name, with all `_` becoming `-`) is not occupied.
  <details><summary><strong>Details on naming convention (click to show/hide)</strong></summary>
  Underscores (`_`) can be used but such use is discouraged. Numbers can be used if the name does not start with a number, but such use is also discouraged.
  Name starting with a number and/or containing hyphen-minus (`-`) should not be used: although technically legal, such name causes a lot of trouble − users have to use `importlib` to import it.
  Don't be fooled by the URL "[pypi.org/project/example-pypi-package/](https://pypi.org/project/example-pypi-package/)" and the name "example-pypi-package" on pypi.org. pypi.org and pip system convert all `_` to `-` and use the latter on the website / in `pip` command, but the real name is still with `_`, which users should use when importing the package.
  There's also [namespace](https://packaging.python.org/guides/packaging-namespace-packages/) to use if you need sub-packages.
  </details>

  Make necessary changes in **setup.py**.
  The package's version number `__version__` is in **src/examplepy/\_\_init\_\_.py**. You may want to change that.
  The example package is designed to be compatible with Python 3.6, 3.7, 3.8, 3.9, and will be tested against these versions. If you need to change the version range, you should change:
  - `classifiers`, `python_requires` in **setup.py**
  - `envlist` in **tox.ini**
  - `matrix: python:` in **.github/workflows/test.yml**
  If you plan to upload to [TestPyPI](https://test.pypi.org/) which is a playground of [PyPI](https://pypi.org/) for testing purpose, change `twine upload --repository pypi dist/*` to `twine upload --repository testpypi dist/*` in the file **.github/workflows/release.yml**.


  pip is a Python package manager. You already have pip if you use Python 3.4 and later version which include it by default. Read [this](https://pip.pypa.io/en/stable/installing/#do-i-need-to-install-pip) to know how to check whether pip is installed. Read [this](https://pip.pypa.io/en/stable/installing/#installing-with-get-pip-py) if you need to install it.

  Visual Studio Code is the most popular code editor today, our example package is configured to work with VS Code.
  Install VS Code extension "[Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python)".
  "Python" VS Code extension will suggest you install pylint. Also, the example package is configured to use pytest with VS Code + Python extensions, so, install pylint and pytest:
  ```bash
  pip install pylint pytest
  ```
  (It's likely you will be prompted to install them, if that's the case, you don't need to type and execute the command)
  **vscode.env**'s content is now `PYTHONPATH=/;src/;${PYTHONPATH}` which is good for Windows. If you use Linux or MacOS, you need to change it to `PYTHONPATH=/:src/:${PYTHONPATH}` (replacing `;` with `:`). If the PATH is not properly set, you'll see linting errors in test files and pytest won't be able to run **tests/test\_\*.py** files correctly.
  Close and reopen VS Code. You can now click the lab flask icon in the left menu and run all tests there, with pytest. pytest seems better than the standard unittest framework, it supports `unittest` thus you can keep using `import unittest` in your test files.
  The example package also has a **.editorconfig** file. You may install VS Code extension "[EditorConfig for VS Code](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig)" that uses the file. With current configuration, the EditorConfig tool can automatically use spaces (4 spaces for .py, 2 for others) for indentation, set `UTF-8` encoding, `LF` end of lines, trim trailing whitespaces in non Markdown files, etc.
  In VS Code, you can go to File -> Preferences -> Settings, type "Python Formatting Provider" in the search box, and choose one of the three Python code formatting tools (autopep8, black and yapf), you'll be prompted to install it. The shortcuts for formatting of a code file are <kbd>Shift</kbd> + <kbd>Alt</kbd> + <kbd>F</kbd> (Windows); <kbd>Shift</kbd> + <kbd>Option (Alt)</kbd> + <kbd>F</kbd> (MacOS); <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>I</kbd> (Linux).

  In **src/examplepy/** (`examplepy` should have been replaced by your module name) folder, rename **module1.py** and write your code in it. Add more module .py files if you need to.

  In **tests/** folder, rename **test_module1.py** (to **test\_\*.py**) and write your unit test code (with [unittest](https://docs.python.org/3/library/unittest.html)) in it. Add more **test\_\*.py** files if you need to.
  <details><summary><strong>The testing tool `tox` will be used in the automation with GitHub Actions CI/CD. If you want to use `tox` locally, click to read the "Use tox locally" section</strong></summary>

  Install tox and run it:
  ```bash
  pip install tox
  tox
  ```
  In our configuration, tox runs a check of source distribution using [check-manifest](https://pypi.org/project/check-manifest/) (which requires your repo to be git-initialized (`git init`) and added (`git add .`) at least), setuptools's check, and unit tests using pytest. You don't need to install check-manifest and pytest though, tox will install them in a separate environment.
  The automated tests are run against several Python versions, but on your machine, you might be using only one version of Python, if that is Python 3.9, then run:
  ```bash
  tox -e py39
  ```
  </details>
  If you add more files to the root directory (**example_pypi_package/**), you'll need to add your file to `check-manifest --ignore` list in **tox.ini**.
  <details><summary><strong>Thanks to GitHub Actions' automated process, you don't need to generate distribution files locally. But if you insist, click to read the "Generate distribution files" section</strong></summary>


  Install or upgrade `setuptools` and `wheel`:
  ```bash
  python -m pip install --user --upgrade setuptools wheel
  ```
  (If `python3` is the command on your machine, change `python` to `python3` in the above command, or add a line `alias python=python3` to **~/.bashrc** or **~/.bash_aliases** file if you use bash on Linux)

  From `example_pypi_package` directory, run the following command, in order to generate production version for source distribution (sdist) in `dist` folder:
  ```bash
  python setup.py sdist bdist_wheel
  ```

  Optionally, you can install dist version of your package locally before uploading to [PyPI](https://pypi.org/) or [TestPyPI](https://test.pypi.org/):
  ```bash
  pip install dist/example_pypi_package-0.1.0.tar.gz
  ```
  (You may need to uninstall existing package first:
  ```bash
  pip uninstall example_pypi_package
  ```
  There may be several installed packages with the same name, so run `pip uninstall` multiple times until it says no more package to remove.)
  </details>


  Register an account on [PyPI](https://pypi.org/), go to [Account settings § API tokens](https://pypi.org/manage/account/#api-tokens), "Add API token". The PyPI token only appears once, copy it somewhere. If you missed it, delete the old and add a new token.
  (Register a [TestPyPI](https://test.pypi.org/) account if you are uploading to TestPyPI)

  On the page of your newly created or existing GitHub repo, click **Settings** -> **Secrets** -> **New repository secret**, the **Name** should be `PYPI_API_TOKEN` and the **Value** should be your PyPI token (which starts with `pypi-`).

  The example package has automated tests and upload (publishing) already set up with GitHub Actions:
  - Every time you `git push` your `master` or `main` branch, the package is automatically tested against the desired Python versions with GitHub Actions.
  - Every time a new release (either the initial version or an updated version) is created, the package is automatically uploaded to PyPI with GitHub Actions.

  After your package is published on PyPI, go to [https://pypi.org/project/example-pypi-package/](https://pypi.org/project/example-pypi-package/) (`_` becomes `-`). Copy the command on the page, execute it to download and install your package from PyPI. (or test.pypi.org if you use that)
  <details><summary><strong>If you publish the package to PyPI manually, click to read</strong></summary>

  Install or upgrade Twine:
  ```bash
  python -m pip install --user --upgrade twine
  ```
  Create a **.pypirc** file in your **$HOME** (**~**) directory, its content should be:
  ```ini
  [pypi]
  username = __token__
  password = <PyPI token>
  ```
  (Use `[testpypi]` instead of `[pypi]` if you are uploading to [TestPyPI](https://test.pypi.org/))
  Replace `<PyPI token>` with your real PyPI token (which starts with `pypi-`).
  (if you don't manually create **$HOME/.pypirc**, you will be prompted for a username (which should be `__token__`) and password (which should be your PyPI token) when you run Twine)

  Run Twine to upload all of the archives under **dist** folder:
  ```bash
  python -m twine upload --repository pypi dist/*
  ```
  (use `testpypi` instead of `pypi` if you are uploading to [TestPyPI](https://test.pypi.org/))

  When you finished developing a newer version of your package, do the following things.
  Modify the version number `__version__` in **src\examplepy\_\_init\_\_.py**.
  Delete all old versions in **dist**.
  Run the following command again to regenerate **dist**:
  ```bash
  python setup.py sdist bdist_wheel
  ```
  Run the following command again to upload **dist**:
  ```bash
  python -m twine upload --repository pypi dist/*
  ```
  (use `testpypi` instead of `pypi` if needed)
  </details>

  - [Python Packaging Authority (PyPA)'s sample project](https://github.com/pypa/sampleproject)
  - [PyPA's Python Packaging User Guide](https://packaging.python.org/tutorials/packaging-projects/)
  - [Stackoverflow questions and answers](https://stackoverflow.com/questions/41093648/how-to-test-that-pypi-install-will-work-before-pushing-to-pypi-python)
  - [GitHub Actions Guides: Building and testing Python](https://docs.github.com/en/free-pro-team@latest/actions/guides/building-and-testing-python)


pkgId: 531d6933bbe62dbfdf444bb8f923d841529534522fa3ed89ca4494ef31224cfc
name: python-ailearn
arch: src
version: 0.2.1.12
epoch: 0
release: 1
summary: A lightweight package for artificial intelligence
url: http://github.com/axi345/ailearn
rpm_license: Apache License, Version 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-ailearn-0.2.1.12-1.src.rpm
checksum_type: sha256
description:
  此为ailearn人工智能算法包。包含了Swarm、RL、nn、utils四个模块。

  - Swarm模块当中，实现了粒子群算法、人工鱼群算法、萤火虫算法和进化策略，以及一些对智能算法进行评估的常用待优化的函数。
  - RL模块包括两部分，TabularRL部分和Environment部分。TabularRL部分集成了一些经典的强化学习算法，包括Q学习、Q(Lambda)、Sarsa、Sarsa(lambda)、Dyna-Q等。Environment部分集成了一些强化学习经典的测试环境，如FrozenLake问题、CliffWalking问题、GridWorld问题等。
  - nn模块包括一些常用的激活函数及损失函数。
  - utils模块包括一些常用的功能，包括距离度量、评估函数、PCA算法、标签值与one-hot编码的相互转换、Friedman检测等等。

  安装方式（在终端中输入）：

  ```
  pip install ailearn
  ```

  更新方式（在终端中输入）：

  ```
  pip install ailearn --upgrade
  ```

  更新历史：

  - 2018.4.10   0.1.3   第一个版本，首次实现了粒子群算法和人工鱼群算法，首次集成到pip当中。
  - 2018.4.16   0.1.4   加入了进化策略的实现，添加了Evaluation模块。
  - 2018.4.18   0.1.5   添加了TabularRL模块和Environment模块。
  - 2018.4.19   0.1.8   将TabularRL模块和Environment模块整合为RL模块，添加了项目的相关描述,更新了相关协议
  - 2018.4.25   0.1.9   输出信息由中文改为英文，并更新了一些已知错误
  - 2019.1.15   0.2.0   添加了utils模块，加入了一些常用的功能，包括距离度量、评估函数、PCA算法、标签值与one-hot编码的相互转换、Friedman检测等等；添加了nn模块，加入了一些常用的激活函数及损失函数；更新了Swarm模块的算法，使它们更新得更快。
  - 2021.4.6    0.2.1   添加了爬虫工具，增加了RL模块与Swarm模块的示例；添加强化学习经典环境Windy GridWorld环境。

  其他更新：

  - 更新了绘制决策边界的方法
  - 更新了绘制数据集的方法
  - 优化了Friedman检测的方法

  项目网址：

  https://pypi.org/project/ailearn/

  https://github.com/axi345/ailearn/


pkgId: 6e926ed566d6b02fe5af32209dda1b0133c8b2f8a431ced330440bf1dcb2d2a5
name: python-ailia-llm
arch: src
version: 1.2.0.0
epoch: 0
release: 1
summary: ailia LLM
url: https://ailia.jp/
rpm_license: https://ailia.ai/en/license/
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-ailia-llm-1.2.0.0-1.src.rpm
checksum_type: sha256
description:
  !! CAUTION !!
  “ailia” IS NOT OPEN SOURCE SOFTWARE (OSS).
  As long as user complies with the conditions stated in [License Document](https://ailia.ai/license/), user may use the Software for free of charge, but the Software is basically paid software.



  ailia LLM is a library for running LLMs on edge devices. It provides bindings for C++ and Unity.



  You can install the ailia LLM free evaluation package with the following command.

  ```
  pip3 install ailia_llm
  ```



  You can install the ailia LLM from Package with the following command.

  ```
  python3 bootstrap.py
  pip3 install ./
  ```



  ```python
  import ailia_llm

  import os
  import urllib.request

  model_file_path = "gemma-2-2b-it-Q4_K_M.gguf"
  if not os.path.exists(model_file_path):
  	urllib.request.urlretrieve(
  		"https://storage.googleapis.com/ailia-models/gemma/gemma-2-2b-it-Q4_K_M.gguf",
  		model_file_path
  	)

  model = ailia_llm.AiliaLLM()
  model.open(model_file_path)

  messages = []
  messages.append({"role": "system", "content": "語尾に「わん」をつけてください。"})
  messages.append({"role": "user", "content": "あなたの名前は何ですか？"})

  stream = model.generate(messages)

  text = ""
  for delta_text in stream:
  	text = text + delta_text
  print(text)

  if model.context_full():
  	raise Exception("Context full")

  messages.append({"role": "assistant", "content": text})
  ```



  https://github.com/axinc-ai/ailia-sdk


pkgId: 9f8acb1d768bce20c7c173decc76727348d71a1ed3bfa3dfb5e0c0c64082bbd9
name: python-ailite
arch: src
version: 1.0.3
epoch: 0
release: 1
summary: A powerful web content fetcher and processor
url: https://github.com/yourusername/pyopengenai
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-ailite-1.0.3-1.src.rpm
checksum_type: sha256
description:
  A lightweight Python interface for AI model interactions through Hugging Face's infrastructure.



  ```bash
  pip install ailite
  ```





  Launch your own API server:

  ```python
  from ailite import serve


  serve()
  ```



  The simplest way to get started:

  ```python
  from ailite import ai
  response = ai("Explain quantum computing")
  print(response)
  ```

  ```python
  from ailite import ai
  response = ai(
      "Explain quantum computing",
      model="nvidia/Llama-3.1-Nemotron-70B-Instruct-HF",
      conversation=False
  )
  ```

  ```python
  from ailite import ai

  for chunk in ai(
      "Write a story about space",
      stream=True
  ):
      print(chunk, end="")
  ```




  For more control over interactions:

  ```python
  from ailite import HUGPIClient

  client = HUGPIClient(
      api_key="your_email@gmail.com_your_password",
      model="nvidia/Llama-3.1-Nemotron-70B-Instruct-HF",
      system_prompt="You are a helpful assistant..."
  )


  response = client.messages.create(
      prompt="What is the theory of relativity?",
      conversation=True
  )
  print(response.content[0]["text"])


  messages = [
      {"role": "user", "content": "Hi, how are you?"},
      {"role": "assistant", "content": "I'm doing well, how can I help?"},
      {"role": "user", "content": "Tell me about AI"}
  ]
  response = client.messages.create(messages=messages)
  ```



  For direct model interactions:

  ```python
  from ailite import HUGPiLLM

  llm = HUGPiLLM(
      hf_email="your_email@gmail.com",
      hf_password="your_password",
      default_llm=3,  # Model index
      system_prompt="Custom system instructions here"
  )

  response = llm.generate("Explain machine learning")
  ```



  ```
  fastapi>=0.68.0
  pydantic>=1.8.0
  uvicorn>=0.15.0
  requests>=2.26.0
  ```



  MIT License - see LICENSE file for details.


pkgId: e390bef284a93260774c97921303ae5c8ab966b190c08c6306af02f35c5fd423
name: python-ailiteall
arch: src
version: 0.0.4
epoch: 0
release: 1
summary: A simplistic ai for Huggingface llms free hosted models.
url: https://github.com/yourusername/pyopengenai
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-ailiteall-0.0.4-1.src.rpm
checksum_type: sha256
description:
  [![PyPI version](https://badge.fury.io/py/ailitellm.svg)](https://badge.fury.io/py/ailitellm)
  [![Downloads](https://static.pepy.tech/badge/ailitellm)](https://pepy.tech/project/ailitellm)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
  [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/release/python-380/)
  [![Documentation Status](https://readthedocs.org/projects/ailitellm/badge/?version=latest)](https://ailitellm.readthedocs.io/en/latest/?badge=latest)
  [![GitHub issues](https://img.shields.io/github/issues/yourusername/ailitellm)](https://github.com/yourusername/ailitellm/issues)
  [![GitHub stars](https://img.shields.io/github/stars/yourusername/ailitellm)](https://github.com/yourusername/ailitellm/stargazers)

  AILiteLLM is a lightweight Python wrapper around the Hugging Face Inference API that provides OpenAI-like interface for various open-source language models. It makes it easy to use powerful open-source models with an interface familiar to OpenAI developers.


  - PyPI: [https://pypi.org/project/ailitellm/](https://pypi.org/project/ailitellm/)
  - Documentation: [https://ailitellm.readthedocs.io/](https://ailitellm.readthedocs.io/)
  - Source Code: [https://github.com/yourusername/ailitellm](https://github.com/yourusername/ailitellm)
  - Issue Tracker: [https://github.com/yourusername/ailitellm/issues](https://github.com/yourusername/ailitellm/issues)



  - OpenAI-compatible interface
  - Support for multiple Hugging Face models
  - Stream responses support
  - Function calling capabilities
  - Full typing support
  - Easy model switching



  From PyPI:
  ```bash
  pip install ailitellm
  ```

  From source:
  ```bash
  git clone https://github.com/yourusername/ailitellm.git
  cd ailitellm
  pip install -e .
  ```

  Development installation:
  ```bash
  pip install -e ".[dev]"
  ```



  ```python
  from ailitellm import ai, ailite_model


  response = ai("What is the capital of France?")
  print(response.choices[0].message.content)


  response = ai(
      "Explain quantum computing",
      model=ailite_model("Qwen/Qwen2.5-72B-Instruct")
  )
  ```



  AILiteLLM supports the following models:

  - `Qwen/Qwen2.5-72B-Instruct` - Large general purpose model
  - `Qwen/QwQ-32B-Preview` - Preview version of QwQ model
  - `Qwen/Qwen2.5-Coder-32B-Instruct` - Specialized for coding tasks
  - `NousResearch/Hermes-3-Llama-3.1-8B` - Efficient general purpose model
  - `microsoft/Phi-3.5-mini-instruct` - Lightweight instruction-following model





  ```python
  messages = [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "Tell me a joke about programming."}
  ]

  response = ai(messages)
  ```



  ```python
  for chunk in ai("Write a poem about AI", stream=True):
      print(chunk.choices[0].delta.content, end="")
  ```



  ```python
  def get_weather(location: str, unit: str = "celsius") -> str:
      """Get the weather for a location"""
      pass

  response = ai(
      "What's the weather in London?",
      tools=[get_weather],
      tool_choice="auto"
  )
  ```



  ```python
  response = ai(
      "Generate a creative story",
      temperature=0.8,
      max_tokens=500,
      top_p=0.9,
      presence_penalty=0.6
  )
  ```



  ```python
  from ailitellm import AILite

  custom_client = AILite(
      base_url="your_custom_endpoint",
      api_key="your_api_key"
  )
  ```



  ```python
  try:
      response = ai("Your prompt here")
  except Exception as e:
      print(f"An error occurred: {e}")
  ```







  Main interface for generating completions.

  Key parameters:
  - `messages_or_prompt`: List of messages or string prompt
  - `model`: Model to use (default: "Qwen/Qwen2.5-72B-Instruct")
  - `temperature`: Sampling temperature (default: 0)
  - `max_tokens`: Maximum tokens to generate
  - `stream`: Enable streaming responses
  - `tools`: List of functions for tool calling
  - See source code for full list of parameters



  Helper function to specify model type with proper type checking.





  Custom client class extending OpenAI's base client.



  To set up the development environment:

  ```bash

  git clone https://github.com/yourusername/ailitellm.git
  cd ailitellm


  python -m venv venv
  source venv/bin/activate  # On Windows: venv\Scripts\activate


  pip install -e ".[dev]"


  pytest tests/
  ```



  - Python >= 3.8
  - openai >= 1.0.0
  - httpx
  - typing-extensions



  Contributions are welcome! Please feel free to submit a Pull Request. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.



  If you use AILiteLLM in your research, please cite:

  ```bibtex
  @software{ailitellm2024,
    author = {Your Name},
    title = {AILiteLLM: OpenAI-compatible Interface for Hugging Face Models},
    year = {2024},
    publisher = {GitHub},
    url = {https://github.com/yourusername/ailitellm}
  }
  ```



  This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.



  - OpenAI for the API interface design
  - Hugging Face for model hosting and inference API
  - All model creators and contributors



  - GitHub Issues: [https://github.com/yourusername/ailitellm/issues](https://github.com/yourusername/ailitellm/issues)
  - Email: your.email@example.com
  - Twitter: [@yourusername](https://twitter.com/yourusername)


pkgId: e9a079ffd8e78be61497e1cdf0818c092d9f16fc36ec663d1cb92e05b4a7be13
name: python-ailment
arch: src
version: 9.2.122
epoch: 0
release: 1
summary: The angr intermediate language.
url: https://github.com/angr/ailment
rpm_license: BSD-2-Clause
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-ailment-9.2.122-1.src.rpm
checksum_type: sha256
description:
  [![Latest Release](https://img.shields.io/pypi/v/ailment.svg)](https://pypi.python.org/pypi/ailment/)
  [![Python Version](https://img.shields.io/pypi/pyversions/ailment)](https://pypi.python.org/pypi/ailment/)
  [![PyPI Statistics](https://img.shields.io/pypi/dm/ailment.svg)](https://pypistats.org/packages/ailment)
  [![License](https://img.shields.io/github/license/angr/ailment.svg)](https://github.com/angr/ailment/blob/master/LICENSE)

  AIL is the angr intermediate language.


  Project repository: https://github.com/angr/ailment

  Documentation: https://api.angr.io/projects/ailment/en/latest/


pkgId: 02b2d27b7b44aacdd13fb4b4cf28b71a318c0963764f7fe95eda07764793dc38
name: python-aily-core
arch: src
version: 0.1.0b10
epoch: 0
release: 1
summary: Aily Core
url: https://pypi.org/project/aily-core/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aily-core-0.1.0b10-1.src.rpm
checksum_type: sha256
description:
  开发时，需要在根目录中创建 `.env` 文件，填写如下内容：

  ```bash
  AILY_SDK_LOCAL_DEBUG=true
  AILY_SDK_CLIENT_ID=c_xxx
  AILY_SDK_CLIENT_SECRET=cxxx
  AILY_SDK_DOMAIN=https://ae-openapi.feishu-boe.cn/
  ```

  然后通过 `python -m unitest` 命令通过执行单元测试来调试代码。



  ```bash
  python -m build
  ```



  ```bash
  python -m twine upload dist/* --verbose
  ```


pkgId: eef9137f13cf8cbcead607229a7b4ec2c5494a5f74d5618dbd73f172425c7b70
name: python-aily-server-sdk
arch: src
version: 0.1.1
epoch: 0
release: 1
summary: Aily Server SDK
url: https://pypi.org/project/aily-server-sdk/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aily-server-sdk-0.1.1-1.src.rpm
checksum_type: sha256
description:
  ```python
  from aily.server_sdk import llm

  message = llm.generate(messages=[
  {"role": "user", "content": "Hello world"}
  ], model="BYOM-pro")
  print(message.content)

  message = llm.generate(messages=[
  {"role": "user", "content": "Hello world"}
  ], model=llm.LLMModel.BYOM_PRO)
  print(message.content)
  ```


  ```
  from aily.server_sdk.conversation import send_message, update_message

  message_id = send_message('xxx')
  print(message_id)
  ```



  ```python
  from aily.server_sdk.data import execute_oql

  oql_query = "SELECT * FROM data_table"
  oql_results = execute_oql(oql_query)
  print(f"OQL查询结果: {oql_results}")

  from aily.server_sdk.data import execute_sql


  sql_query = "SELECT * FROM analytics_table"
  sql_results = execute_sql(sql_query)
  print(f"SQL查询结果: {sql_results}")
  ```



  ```python
  from aily.server_sdk import knowledge

  knowledge_id = "my_knowledge_base"
  query_text = "如何获取飞书多维表格的高阶权限协作者?"

  results = knowledge.retrieve(knowledge_id, query_text, top_k=3, threshold=0.7)

  ```


pkgId: c687c3c116ef6c668bbc8ba5641cab4af2de5df0a8e7b04db35d59e71c68c855
name: python-aima3
arch: src
version: 1.0.11
epoch: 0
release: 1
summary: Artificial Intelligence: A Modern Approach, in Python3
url: https://github.com/Calysto/aima3
rpm_license: BSD License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aima3-1.0.11-1.src.rpm
checksum_type: sha256
description:
  Python code for the book *`Artificial Intelligence: A Modern
  Approach <http://aima.cs.berkeley.edu>`__.* You can use this in
  conjunction with a course on AI, or for study on your own. We're looking
  for `solid
  contributors <https://github.com/aimacode/aima-python/blob/master/CONTRIBUTING.md>`__
  to help.


pkgId: c93160cab809e7492e0396efe4157e4522303d7a0484dfe1776c7bd7adda6ce5
name: python-aimap
arch: src
version: 1.5.0
epoch: 0
release: 1
url: https://github.com/castualwang/aimap
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aimap-1.5.0-1.src.rpm
checksum_type: sha256
summary:
  aimap provides a package and script for finding the modification from Adenosine to inosine (A to I).


pkgId: aac68c69a40fe34bd82d480f3093801eb0fb4da41aa99c21d149f592d1a6530b
name: python-aimaster
arch: src
version: 2.4.8
epoch: 0
release: 1
summary: Artificial Neural Network learning tools
url: https://github.com/kasinathps/aimaster
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aimaster-2.4.8-1.src.rpm
checksum_type: sha256
description:
  Artificial Neural Network learning and experimentation tools with live visualization.
  (NOTE: Donot use pipe visualization with very large networks ðŸ˜….)
  This module needs `numpy` and `scipy` installed.
  And `matplotlib` for visualization.
  Feel free to experiment with aimaster.

  Use `pip install aimaster` or `pip3 install aimaster` to install package from PyPI.


pkgId: 57d4197c4fc988adfa6d75359b330e3d7bcd81eb02dda535698264259949704a
name: python-aiml.py
arch: src
version: 0.9.2
epoch: 0
release: 1
summary: An interpreter package for AIML, the Artificial Intelligence Markup Language
url: https://github.com/calysto/aiml
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aiml.py-0.9.2-1.src.rpm
checksum_type: sha256
description:
  Two small scripts are added upon installation:
  * ``aiml-validate`` can be used to validate AIML files
  * ``aiml-bot`` can be used to start a simple interactive session with a bot,
    after loading either AIML files or a saved brain file.


pkgId: ac9c1d812dc798c59ff0062a922b59f29f8e9db5f40a33db68606a8ef882af7b
name: python-aimllabnew
arch: src
version: 0.2.3
epoch: 0
release: 1
summary: A Python library with various useful AI/ML code snippets.
url: https://github.com/mdimado/aimllab
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aimllabnew-0.2.3-1.src.rpm
checksum_type: sha256
description:
  `aimllab` is a Python library for solving the 0/1 knapsack problem.



  You can install `aimllab` via pip:




  This README provides a brief overview of the library, installation instructions, usage examples, and information about the license.


pkgId: a573f9d3a325f72599e46cb8ceadfd7dab747007fd6d4f8a9a4f91fe20c2b280
name: python-aimluvce
arch: src
version: 0.1.1
epoch: 0
release: 1
summary: A custom library with various functions and models for ANN labouratory
url: https://github.com/prashanthktgowda/aimluvce
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aimluvce-0.1.1-1.src.rpm
checksum_type: sha256
description:
  This is a simple example Python package. It includes a basic function `print` that print the all thre academic labouratory programs. The package is designed to demonstrate how to create, package, and distribute Python libraries.



  You can install the package directly from PyPI using pip:

  ```bash
  pip install ksvian


pkgId: edb9b8fc02f823fddafc0ee9ec3a8dd1892dc21218b77a2e39a1f2a46bcdd021
name: python-aimmocore
arch: src
version: 0.1.15
epoch: 0
release: 1
summary: The sdk for aimmocore curation service
url: https://pypi.org/project/aimmocore/
rpm_license: AIMMO, apache 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aimmocore-0.1.15-1.src.rpm
checksum_type: sha256
description:
  The Aimmocore Curation SDK is a Python package that selects core data within a dataset through clustering techniques using metadata and embedding information of images.



  - Python 3.8 or later


  ```bash
  pip install aimmocore
  ```


pkgId: b06f2c604da832caf4f0a4293b487237f19b2357bb33de69824dd186450e2d9b
name: python-aimodelshare
arch: src
version: 0.1.27
epoch: 0
release: 1
url: https://www.modelshare.org
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aimodelshare-0.1.27-1.src.rpm
checksum_type: sha256
summary:
  Deploy locally saved machine learning models to a live rest API and web-dashboard.  Share it with the world via modelshare.org

description:
  * ***Launch machine learning models into scalable production ready prediction REST APIs using a single Python function.***

  * ***Details about each model, how to use the model's API, and the model's author(s) are deployed simultaneously into a searchable website at modelshare.org.***

  * ***Deployed models receive an individual Model Playground listing information about all deployed models. Each of these pages includes a fully functional prediction dashboard that allows end-users to input text, tabular, or image data and receive live predictions.***

  * ***Moreover, users can build on model playgrounds by 1) creating ML model competitions, 2) uploading Jupyter notebooks to share code, 3) sharing model architectures and 4) sharing data... with all shared artifacts automatically creating a data science user portfolio.***


  * [Tutorials for deploying models](https://www.modelshare.org/search/deploy?search=ALL&problemdomain=ALL&gettingstartedguide=TRUE&pythonlibrariesused=ALL&tags=ALL&pageNum=1).


  * [View deployed models and generate predictions at modelshare.org](https://www.modelshare.org)



  You can then install aimodelshare from PyPi
  ```
  pip install aimodelshare
  ```


pkgId: 93d9ebc9ae815d1932f3e9e61c7cceed32e6c344c7bf563971c32c2fe92d961c
name: python-aimped
arch: src
version: 0.2.54
epoch: 0
release: 1
url: https://aimped.ai/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aimped-0.2.54-1.src.rpm
checksum_type: sha256
summary:
  Aimped is a unique library that provides classes and functions for only exclusively business-tailored AI-based NLP models.

description:
  ![aimped](https://cdn-prod.aimped.ai/media/frontend/srcicons/AimpedLogoDark.svg)



  [![PyPI version](https://badge.fury.io/py/aimped.svg)](https://badge.fury.io/py/aimped)
  [![Downloads](https://pepy.tech/badge/aimped)](https://pepy.tech/project/aimped)

  Welcome to **Aimped Inc.**: an LLMs-in-the-loop AI Platform.

  Aimped is a distinctive AI platform offering model inference and development, harnessing the power of LLMs. Our innovative approach ensures quick, cost-effective, and efficient model training and evaluation. Additionally, we provide user-friendly UI-based AI applications and LLM Agents, making advanced AI accessible and easy to use.

  Moreover, we will soon allow model uploads and enable users to earn money. This will encourage the open-source community to share models, reducing redundant training and computing costs while fostering collaboration and innovation.

  **<code>aimped</code> is a unique python library that provides classes and functions for only exclusively business-tailored AI-based models.**
  In this version, we provide the following features:
  API service, Sound processing tools and functions, NLP tools and functions, and a pipeline class for NLP tasks.



  ```python
  pip install aimped
  ```





  ```python
  from aimped.services.api import AimpedAPI


  user_key = ''  # user_key received from A3M.
  user_secret = ''  # user_secret received from A3M.
  BASE_URL = 'https://aimped.ai'  # Aimped domain url

  api_service = AimpedAPI(user_key, user_secret, {
    base_url: BASE_URL
  })
  ```



  ```python
  model_id = ""   # ID of the model run. The model ID is available on the model description page under API usage.
  payload = {...}  # Model input examples (payload) are available in the api usage tab on the Model description page.
  ```



  ```python
  result = api_service.run_mode(model_id, input_data)
  ```



  ```python


  def callback(event, message, time, data=None):
      if event == 'start':
          print(f'Start event at {time}: {message}')
      elif event == 'proccess':
          print(f'Progress event at {time}: {message}')
      elif event == 'error':
          print(f'Error event at {time}: {message}')
      elif event == 'end':
          print(f'End event at {time}: {message}. Data: {data}')

  result = api_service.run_model_callback(model_id, payload, callback)
  ```



  Some of the models supports file inputs. These inputs are accepted as URIs. Here is the usage of API for file uploads.

  ```python
  input = api_service.file_upload(
      model_id,
      '/Users/joe/Downloads/xyz.pdf'  # sample file path to upload
      )
  ```



  Some of the models supports file outputs as result. These outputs are created as URIs. Here is the usage of API for file downloads.

  ```python
    output_file = api_service.file_download_and_save(
      'input/application/model_{{modelId}}/user_{{userId}}/file_name',  # URI of the model output file in the result
      '/Users/joe/Downloads/123_file_name'  # sample local file path to save
      )
  ```



  Pull requests are welcome. For major changes, please open an issue first
  to discuss what you would like to change.

  Please make sure to update tests as appropriate.



  [MIT](https://choosealicense.com/licenses/mit/)


pkgId: 35bfe57f913effd274114da427e500cd4d1f38c9acfa99106812019c068e506c
name: python-aims-immune
arch: src
version: 0.9.2
epoch: 0
release: 1
summary: A software for the analysis of immune repertoires
url: https://github.com/ctboughter/aims
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aims-immune-0.9.2-1.src.rpm
checksum_type: sha256
description:
  As of AIMS v0.9, everything should be nicely wrapped up as an installable pypi package. You can simply install the AIMS GUI, CLI, and notebook using pip:

  ```
  pip install aims-immune
  ```

  You can then launch the GUI, the CLI, or the notebook from the terminal in the directory your data is located using one of:

  ```
  aims-gui
  ```

  ```
  aims-cli
  ```

  ```
  aims-notebook
  ```

  Lastly, you can optionally copy test data into your current directory using:

  ```
  aims-tests
  ```

  Whether you are a new or returning AIMS user, it is strongly recommended you check out the documentation (see below) to learn details about formatting and usage. For returning users especially, the way AIMS is called has changed completely.


  The primary goal of AIMS is to identify discriminating factors between two distinct sets of immune molecules. As of versions 0.8 and later, the software is now capable of analyzing any set of sequences with general conservation and localized diversity. AIMS has specific analysis modes for Immunoglobulins (Ig - T Cell Receptors and Antibodies) and Peptides (Specifically those isolated from MHC), as well as a more general multi-sequence alignment analysis mode that has been used to characterize MHC molecules, MHC-like molecules, and the non-immunological Dpr-DIP proteins.

  AIMS is a python package distributed in a notebook, CLI, and GUI format. An example of an application of AIMS can be seen in
  this peer-reviewed article: https://elifesciences.org/articles/61393

  When publishing analysis from this software, please cite:

  Boughter CT, Borowska MT, Guthmiller JJ, Bendelac A, Wilson PC, Roux B, Adams EJ. Biochemical Patterns of Antibody Polyreactivity Revealed Through a Bioinformatics-Based Analysis of CDR Loops. eLife. 2020. DOI: 10.7554/eLife.61393

  &

  Boughter CT, Meier-Schellersheim M. An Integrated Approach to the Characterization of Immune Repertoires Using AIMS: An Automated Immune Molecule Separator. PLoS Computational Biology. 2023. DOI: 10.1371/journal.pcbi.1011577


  Rather than have all of the instructions on this GitHub page, all information on installation and usage (and more!) has been moved to a separate, more readable documentation page. Please follow this link:

  https://aims-doc.readthedocs.io/en/latest/

  For the comprehensive AIMS user guide.


  As of versions 0.8 and later, the data necessary for reproducing data published thus far have been moved to a separate repository. This repository can be found here:

  https://github.com/ctboughter/AIMS_manuscripts

  The underlying code remains the same, and will continue to be updated. This has been done to keep the AIMS analysis software more streamlined and less cluttered with manuscript-specific analysis.


  Now that AIMS has been out and in the wild for around two years, there have been additional published peer-reviewed manuscripts or posted preprints that highlight the capabilities of AIMS! I'll try to keep this list relatively up to date, and if it ever gets lengthy will likely move it to the ReadTheDocs page. Manuscripts thus far include:

  - An application of AIMS to non-immune molecules using multi-sequence alignment (MSA) encoding: https://pubs.acs.org/doi/abs/10.1021/acs.jpcb.2c02173
  - A unique paper highlighting the flexiblity of AIMS, with an application to an analysis of SARS-CoV-2 binding epitopes: https://www.nature.com/articles/s42003-023-05332-w
  - The AIMS bible, with a thorough explanation of the rationale behind the AIMS analysis: https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1011577
  - An investigation of the nature of the germline interactions between TCR CDR loops and MHC: https://elifesciences.org/articles/90681


pkgId: 898a630886f7746d16d261285672ce14cb246c1e9650a94ade19d3d650611c43
name: python-aind-behavior-gym
arch: src
version: 0.4.3
epoch: 0
release: 1
summary: Generated from aind-library-template
url: https://pypi.org/project/aind-behavior-gym/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-behavior-gym-0.4.3-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)
  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)
  ![Interrogate](https://img.shields.io/badge/interrogate-100.0%25-brightgreen)
  ![Coverage](https://img.shields.io/badge/coverage-96%25-brightgreen?logo=codecov)
  ![Python](https://img.shields.io/badge/python->=3.7-blue?logo=python)

  Implementing AIND behavior _**tasks**_ using [gymnasium](https://gymnasium.farama.org/index.html) and setting up base class for _**agents**_ that perform the tasks.

  User documentation available on [readthedocs](https://aind-behavior-gym.readthedocs.io/).


  It aims to provide a common language among behavior-related animal training, artificial agent training, model fitting, and model simulation in AIND.

  See related repos:
  - Model fitting and simulation [(aind-dynamic-foraging-models)](https://github.com/AllenNeuralDynamics/aind-dynamic-foraging-models)
  - MetaRL-agents [(aind-behavior-meta-RL)](https://github.com/AllenNeuralDynamics/aind-behavior-meta-RL)
  - Animal training [(dynamic-foraging-task)](https://github.com/AllenNeuralDynamics/dynamic-foraging-task)

  ![image](https://github.com/user-attachments/assets/cc17372f-3591-424b-b962-7f41790c1ac5)




  For now, three dynamic foraging tasks have been implemented.

  ![image](classes_aind-behavior-gym.png)



   - To use this template, click the green `Use this template` button and `Create new repository`.
   - After github initially creates the new repository, please wait an extra minute for the initialization scripts to finish organizing the repo.
   - To enable the automatic semantic version increments: in the repository go to `Settings` and `Collaborators and teams`. Click the green `Add people` button. Add `svc-aindscicomp` as an admin. Modify the file in `.github/workflows/tag_and_publish.yml` and remove the if statement in line 65. The semantic version will now be incremented every time a code is committed into the main branch.
   - To publish to PyPI, enable semantic versioning and uncomment the publish block in `.github/workflows/tag_and_publish.yml`. The code will now be published to PyPI every time the code is committed into the main branch.
   - The `.github/workflows/test_and_lint.yml` file will run automated tests and style checks every time a Pull Request is opened. If the checks are undesired, the `test_and_lint.yml` can be deleted. The strictness of the code coverage level, etc., can be modified by altering the configurations in the `pyproject.toml` file and the `.flake8` file.


  To use the software, in the root directory, run
  ```bash
  pip install -e .
  ```

  To develop the code, run
  ```bash
  pip install -e .[dev]
  ```





  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```bash
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```bash
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```bash
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```bash
  black .
  ```

  - Use **isort** to automatically sort import statements:
  ```bash
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```text
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bugfix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests



  The table below, from [semantic release](https://github.com/semantic-release/semantic-release), shows which commit message gets you which release type when `semantic-release` runs (using the default configuration):

  | Commit message                                                                                                                                                                                   | Release type                                                                                                    |
  | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- |
  | `fix(pencil): stop graphite breaking when too much pressure applied`                                                                                                                             | ~~Patch~~ Fix Release, Default release                                                                          |
  | `feat(pencil): add 'graphiteWidth' option`                                                                                                                                                       | ~~Minor~~ Feature Release                                                                                       |
  | `perf(pencil): remove graphiteWidth option`<br><br>`BREAKING CHANGE: The graphiteWidth option has been removed.`<br>`The default graphite width of 10mm is always used for performance reasons.` | ~~Major~~ Breaking Release <br /> (Note that the `BREAKING CHANGE: ` token must be in the footer of the commit) |


  To generate the rst files source files for documentation, run
  ```bash
  sphinx-apidoc -o doc_template/source/ src
  ```
  Then to create the documentation HTML files, run
  ```bash
  sphinx-build -b html doc_template/source/ doc_template/build/html
  ```
  More info on sphinx installation can be found [here](https://www.sphinx-doc.org/en/master/usage/installation.html).


pkgId: e46a44915a298817da58f89e68f1a5b2ecd60da367c56ea0aefcdffd757ce7f2
name: python-aind-behavior-services
arch: src
version: 0.8.8
epoch: 0
release: 1
summary: A library that defines AIND data schema and validates JSON files for behavior rig models.
url: https://pypi.org/project/aind-behavior-services/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-behavior-services-0.8.8-1.src.rpm
checksum_type: sha256
description:
  The python package can be installed from pypi using the following command:
  ```bash
  pip install aind-behavior-services
  ```
  However, to use all the tasks and hardware that this package supports, you should over over the [prerequisites](#prerequisites) and [deployment](#deployment) sections.

  These should only need to be installed once on a fresh new system, and are not required if simply refreshing the install or deploying to a new folder.
  - Windows 10 or 11
  - Run `./scripts/install_dependencies.ps1` to automatically install dependencies
  - The following dependencies should be manually installed:
    - [Spinnaker SDK 1.29.0.5](https://www.flir.co.uk/support/products/spinnaker-sdk/#Downloads) (device drivers for FLIR cameras)


pkgId: ab83149f06762b8606bc434ac024b9fadb5969ca8f722258f4472eb99cc42a81
name: python-aind-behavior-video-transformation
arch: src
version: 0.1.3
epoch: 0
release: 1
summary: Handles behavior modality folder
url: https://pypi.org/project/aind-behavior-video-transformation/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-behavior-video-transformation-0.1.3-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)
  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)
  ![Interrogate](https://img.shields.io/badge/interrogate-100.0%25-brightgreen)
  ![Coverage](https://img.shields.io/badge/coverage-93%25-brightgreen?logo=codecov)
  ![Python](https://img.shields.io/badge/python->=3.10-blue?logo=python)

  This project is used to encode behavior videos and, depending on the user
  request, will compress those videos while ensuring that they are formatted for
  correct display across many devices. This may include common image
  preprocessing steps, such as gamma encoding, that are necessary for correct
  display, but have to be done post-hoc for our behavior videos.



  This will attempt to compress videos so that the results:

  * Retain the majority of the detail of the input video
  * Take up as little space as possible for a target amount of visual detail
  * Are in a format that can be widely viewed across devices, and streamed by
    browsers
  * Have pixel data in a color space that most players can properly display

  This video compression is often lossy, and the original videos are not kept, so
  this library will attempt to produce the highest-quality video for a target
  compression ratio. The _speed_ of this compression is strictly secondary to the
  _quality_ of the compression, as measured by the visual detail retained and the
  compression ratio. See
  [this section](#brief-benchmarks-on-video-compression-with-cpu-based-encoders-and-gpu-based-encoders)
  for more details.


  Additionally, this package should provide an easy to use interface that:

  * Presents users with a curated set of compression settings, which have been
    rigorously tested in terms of their visual quality using perception-based
    metrics like VMAF.
  * Allow users to also provide their own compression settings, if they have
    specific requirements



  * Sacrifice the visual fidelity of videos in order to decrease encoding time.


   - The BehaviorVideoJob.run_job method in the transform_videos should be the
     primary method to call for processing video files.
   - On a merge to main, this package will be published as a singularity
     container, which can easily be run on a SLURM cluster.



  A surprising fact is that video encoders implementing the same algorithm, but
  written for different compute resources do _not_ have the same visual
  performance; for a given compression ratio, or similar settings, they do not
  retain the same amount of visual detail. This is also true for different presets
  of the same encoder and compute resource even if the other settings are
  identical. For example, the presets `-preset fast` and `-preset veryslow` of the
  encoder `libx264` produce videos with the same compression ratio, but differing
  visual quality.

  This can be seen in the plot below, where the GPU encoder and CPU encoders
  retain different amounts of visual detail, as assessed with visual
  perception-based metric
  [VMAF](https://en.wikipedia.org/wiki/Video_Multimethod_Assessment_Fusion). Also
  note the difference between presets for the same encoder and compute resource:
  _CPU Fast_ and _CPU Slow_.

  ![visual performance vs compress ratio](/assets/compression-vs-quality.png)

  This figure shows that for compression ratios greater than 100, it often makes
  sense to take your time and use a slow preset of a CPU-based encoder to retain
  as much visual information for a given amount of compression.

  While it may be tempting to select a faster preset, or faster compute resource
  like GPU for dramatic speedups shown below, doing will degrade the quality of
  the resulting video.

  ![throughput vs compress ratio](/assets/compression-vs-speed.png)

  Because the output of this package are permanent video artifacts, the
  compression is lossy, and the intent is to delete the original, taking the CPU
  time to produce the highest quality video possible might well be worth it.




  To develop the code, run
  ```bash
  pip install -e .[dev]
  ```





  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```bash
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```bash
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```bash
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```bash
  black .
  ```

  - Use **isort** to automatically sort import statements:
  ```bash
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```text
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bugfix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests



  The table below, from [semantic release](https://github.com/semantic-release/semantic-release), shows which commit message gets you which release type when `semantic-release` runs (using the default configuration):

  | Commit message                                                                                                                                                                                   | Release type                                                                                                    |
  | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- |
  | `fix(pencil): stop graphite breaking when too much pressure applied`                                                                                                                             | ~~Patch~~ Fix Release, Default release                                                                          |
  | `feat(pencil): add 'graphiteWidth' option`                                                                                                                                                       | ~~Minor~~ Feature Release                                                                                       |
  | `perf(pencil): remove graphiteWidth option`<br><br>`BREAKING CHANGE: The graphiteWidth option has been removed.`<br>`The default graphite width of 10mm is always used for performance reasons.` | ~~Major~~ Breaking Release <br /> (Note that the `BREAKING CHANGE: ` token must be in the footer of the commit) |


  To generate the rst files source files for documentation, run
  ```bash
  sphinx-apidoc -o doc_template/source/ src
  ```
  Then to create the documentation HTML files, run
  ```bash
  sphinx-build -b html doc_template/source/ doc_template/build/html
  ```
  More info on sphinx installation can be found [here](https://www.sphinx-doc.org/en/master/usage/installation.html).


pkgId: 45816f1dc691de6ff7ed3cace181bd33d4f34a49f4e582eed8a0873abb2de137
name: python-aind-behavior-video-transformation
arch: src
version: 0.1.5
epoch: 0
release: 1
summary: Handles behavior modality folder
url: https://pypi.org/project/aind-behavior-video-transformation/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-behavior-video-transformation-0.1.5-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)
  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)
  ![Interrogate](https://img.shields.io/badge/interrogate-100.0%25-brightgreen)
  ![Coverage](https://img.shields.io/badge/coverage-93%25-brightgreen?logo=codecov)
  ![Python](https://img.shields.io/badge/python->=3.10-blue?logo=python)

  This project is used to encode behavior videos and, depending on the user
  request, will compress those videos while ensuring that they are formatted for
  correct display across many devices. This may include common image
  preprocessing steps, such as gamma encoding, that are necessary for correct
  display, but have to be done post-hoc for our behavior videos.



  This will attempt to compress videos so that the results:

  * Retain the majority of the detail of the input video
  * Take up as little space as possible for a target amount of visual detail
  * Are in a format that can be widely viewed across devices, and streamed by
    browsers
  * Have pixel data in a color space that most players can properly display

  This video compression is often lossy, and the original videos are not kept, so
  this library will attempt to produce the highest-quality video for a target
  compression ratio. The _speed_ of this compression is strictly secondary to the
  _quality_ of the compression, as measured by the visual detail retained and the
  compression ratio. See
  [this section](#brief-benchmarks-on-video-compression-with-cpu-based-encoders-and-gpu-based-encoders)
  for more details.


  Additionally, this package should provide an easy to use interface that:

  * Presents users with a curated set of compression settings, which have been
    rigorously tested in terms of their visual quality using perception-based
    metrics like VMAF.
  * Allow users to also provide their own compression settings, if they have
    specific requirements



  * Sacrifice the visual fidelity of videos in order to decrease encoding time.



  A surprising fact is that video encoders implementing the same algorithm, but
  written for different compute resources do _not_ have the same visual
  performance; for a given compression ratio, or similar settings, they do not
  retain the same amount of visual detail. This is also true for different presets
  of the same encoder and compute resource even if the other settings are
  identical. For example, the presets `-preset fast` and `-preset veryslow` of the
  encoder `libx264` produce videos with the same compression ratio, but differing
  visual quality.

  This can be seen in the plot below, where the GPU encoder and CPU encoders
  retain different amounts of visual detail, as assessed with visual
  perception-based metric
  [VMAF](https://en.wikipedia.org/wiki/Video_Multimethod_Assessment_Fusion). Also
  note the difference between presets for the same encoder and compute resource:
  _CPU Fast_ and _CPU Slow_.

  ![visual performance vs compress ratio](/assets/compression-vs-quality.png)

  This figure shows that for compression ratios greater than 100, it often makes
  sense to take your time and use a slow preset of a CPU-based encoder to retain
  as much visual information for a given amount of compression.

  While it may be tempting to select a faster preset, or faster compute resource
  like GPU for dramatic speedups shown below, doing will degrade the quality of
  the resulting video.

  ![throughput vs compress ratio](/assets/compression-vs-speed.png)

  Because the output of this package are permanent video artifacts, the
  compression is lossy, and the intent is to delete the original, taking the CPU
  time to produce the highest quality video possible might well be worth it.


   - The BehaviorVideoJob.run_job method in the transform_videos should be the
     primary method to call for processing video files.
   - On a merge to main, this package will be published as a singularity
     container, which can easily be run on a SLURM cluster.


  In the same directory as the Dockerfile, run
  ```bash
  docker build -t aind-behavior-video-transformation-local .
  ```

  Now a docker container can be run. You may need to change the mount locations and file permissions:
  ```bash
  docker run -v /home/local_videos/input_source:/mnt/input_source -v /home/local_videos/output_directory:/mnt/output_directory aind-behavior-video-transformation-local python -m aind_behavior_video_transformation.etl --job-settings '{"compression_requested": {"compression_enum": "gamma fix colorspace"}, "parallel_compression": true, "input_source": "/mnt/input_source", "output_directory": "/mnt/output_directory"}'
  ```



  To develop the code, run
  ```bash
  pip install -e .[dev]
  ```





  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```bash
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```bash
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```bash
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```bash
  black .
  ```

  - Use **isort** to automatically sort import statements:
  ```bash
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```text
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bugfix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests



  The table below, from [semantic release](https://github.com/semantic-release/semantic-release), shows which commit message gets you which release type when `semantic-release` runs (using the default configuration):

  | Commit message                                                                                                                                                                                   | Release type                                                                                                    |
  | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- |
  | `fix(pencil): stop graphite breaking when too much pressure applied`                                                                                                                             | ~~Patch~~ Fix Release, Default release                                                                          |
  | `feat(pencil): add 'graphiteWidth' option`                                                                                                                                                       | ~~Minor~~ Feature Release                                                                                       |
  | `perf(pencil): remove graphiteWidth option`<br><br>`BREAKING CHANGE: The graphiteWidth option has been removed.`<br>`The default graphite width of 10mm is always used for performance reasons.` | ~~Major~~ Breaking Release <br /> (Note that the `BREAKING CHANGE: ` token must be in the footer of the commit) |


  To generate the rst files source files for documentation, run
  ```bash
  sphinx-apidoc -o doc_template/source/ src
  ```
  Then to create the documentation HTML files, run
  ```bash
  sphinx-build -b html doc_template/source/ doc_template/build/html
  ```
  More info on sphinx installation can be found [here](https://www.sphinx-doc.org/en/master/usage/installation.html).


pkgId: 28f0b75affa56c9f09ad33cb92b60a7750738aebd2673e76e44804ce110d4510
name: python-aind-codeocean-api
arch: src
version: 0.5.0
epoch: 0
release: 1
summary: CodeOcean API manager in Python
url: https://pypi.org/project/aind-codeocean-api/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-codeocean-api-0.5.0-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)

  Python wrapper around CodeOcean's REST API.


  To install from [PyPI](https://pypi.org/project/aind-codeocean-api/), run:
  ```
  pip install aind-codeocean-api
  ```

  To install from a clone of the repository, in the root directory, run
  ```
  pip install -e .
  ```

  To install the development libraries of the code, run
  ```
  pip install -e .[dev]
  ```


  Example of getting data asset metadata:
  ```
  from aind_codeocean_api.codeocean import CodeOceanClient

  domain = "https://acmecorp.codeocean.com"
  token = "AN_API_TOKEN" # Replace with your api token
  data_asset_id = "37a93748-ce90-4980-913b-2de0908d5212"
  co_client = CodeOceanClient(domain=domain, token=token)
  response = co_client.get_data_asset(data_asset_id=data_asset_id)
  metadata = response.json()
  ```

  To store credentials locally, run:
  ```
  python -m aind_codeocean_api.credentials
  ```





  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```
  black .
  ```

  - Use **isort** to automatically sort import statements:
  ```
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repo and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect the build system or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bug fix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests


  To generate the rst files source files for documentation, run
  ```
  sphinx-apidoc -o doc_template/source/ src
  ```
  Then to create the documentation html files, run
  ```
  sphinx-build -b html doc_template/source/ doc_template/build/html
  ```
  More info on sphinx installation can be found here: https://www.sphinx-doc.org/en/master/usage/installation.html


pkgId: f1defe0825eb957ee9ac88b4e6acd2ea0d161bd430eae7881420d2fe0ffaba47
name: python-aind-codeocean-api
arch: src
version: 0.5.1
epoch: 0
release: 1
summary: CodeOcean API manager in Python
url: https://pypi.org/project/aind-codeocean-api/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-codeocean-api-0.5.1-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)

  Python wrapper around CodeOcean's REST API.



  Code Ocean has published their own SDK:

  https://github.com/codeocean/codeocean-sdk-python

  We will be dropping support of this package in favor of the official SDK.


  To install from [PyPI](https://pypi.org/project/aind-codeocean-api/), run:
  ```
  pip install aind-codeocean-api
  ```

  To install from a clone of the repository, in the root directory, run
  ```
  pip install -e .
  ```

  To install the development libraries of the code, run
  ```
  pip install -e .[dev]
  ```


  Example of getting data asset metadata:
  ```
  from aind_codeocean_api.codeocean import CodeOceanClient

  domain = "https://acmecorp.codeocean.com"
  token = "AN_API_TOKEN" # Replace with your api token
  data_asset_id = "37a93748-ce90-4980-913b-2de0908d5212"
  co_client = CodeOceanClient(domain=domain, token=token)
  response = co_client.get_data_asset(data_asset_id=data_asset_id)
  metadata = response.json()
  ```

  To store credentials locally, run:
  ```
  python -m aind_codeocean_api.credentials
  ```





  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```
  black .
  ```

  - Use **isort** to automatically sort import statements:
  ```
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repo and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect the build system or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bug fix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests


  To generate the rst files source files for documentation, run
  ```
  sphinx-apidoc -o doc_template/source/ src
  ```
  Then to create the documentation html files, run
  ```
  sphinx-build -b html doc_template/source/ doc_template/build/html
  ```
  More info on sphinx installation can be found here: https://www.sphinx-doc.org/en/master/usage/installation.html


pkgId: 1a804f558c484bf0784bca5b8ea2ced02d0dd55e0dacef746abc2ba7d636ae9c
name: python-aind-codeocean-utils
arch: src
version: 0.2.1
epoch: 0
release: 1
summary: Generated from aind-library-template
url: https://pypi.org/project/aind-codeocean-utils/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-codeocean-utils-0.2.1-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)
  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)
  ![Interrogate](https://img.shields.io/badge/interrogate-100.0%25-brightgreen)
  ![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen?logo=codecov)
  ![Python](https://img.shields.io/badge/python->=3.7-blue?logo=python)

  Library to contain useful utility methods to interface with Code Ocean.



  To use the package, you can install it from `pypi`:
  ```bash
  pip install aind-codeocean-utils
  ```


  To install the package from source, in the root directory, run
  ```bash
  pip install -e .
  ```

  To develop the code, run
  ```bash
  pip install -e .[dev]
  ```



  The package includes helper functions to interact with Code Ocean:



  This class enables one to run a job that:

  1. Registers a new asset to Code Ocean from s3
  2. Runs a capsule/pipeline on the newly registered asset (or an existing assey)
  3. Captures the run results into a new asset

  Steps 1 and 3 are optional, while step 2 (running the computation) is mandatory.

  Here is a full example that registers a new ecephys asset, runs the spike sorting
  capsule with some parameters, and registers the results:

  ```python
  import os

  from aind_codeocean_api.codeocean import CodeOceanClient
  from aind_codeocean_utils.codeocean_job import (
      CodeOceanJob, CodeOceanJobConfig
  )


  CO_TOKEN = os.environ["CO_TOKEN"]
  CO_DOMAIN = os.environ["CO_DOMAIN"]

  co_client = CodeOceanClient(domain=CO_DOMAIN, token=CO_TOKEN)


  job_config_dict = dict(
      register_config = dict(
          asset_name="test_dataset_for_codeocean_job",
          mount="ecephys_701305_2023-12-26_12-22-25",
          bucket="aind-ephys-data",
          prefix="ecephys_701305_2023-12-26_12-22-25",
          tags=["codeocean_job_test", "ecephys", "701305", "raw"],
          custom_metadata={
              "modality": "extracellular electrophysiology",
              "data level": "raw data",
          },
          viewable_to_everyone=True
      ),
      run_capsule_config = dict(
          data_assets=None, # when None, the newly registered asset will be used
          capsule_id="a31e6c81-49a5-4f1c-b89c-2d47ae3e02b4",
          run_parameters=["--debug", "--no-remove-out-channels"]
      ),
      capture_result_config = dict(
          process_name="sorted",
          tags=["np-ultra"] # additional tags to the ones inherited from input
      )
  )


  job_config = CodeOceanJobConfig(**job_config_dict)


  co_job = CodeOceanJob(co_client=co_client, job_config=job_config)


  job_response = co_job.run_job()
  ```

  This job will:
  1. Register the `test_dataset_for_codeocean_job` asset from the specified s3 bucket and prefix
  2. Run the capsule `a31e6c81-49a5-4f1c-b89c-2d47ae3e02b4` with the specified parameters
  3. Register the result as `test_dataset_for_codeocean_job_sorter_{date-time}`


  To run a computation on existing data assets, do not provide the `register_config` and
  provide the `data_asset` field in the `run_capsule_config`.

  To skip capturing the result, do not provide the `capture_result_config` option.






  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```bash
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```bash
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```bash
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```bash
  black .
  ```

  - Use **isort** to automatically sort import statements:
  ```bash
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```text
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bugfix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests



  The table below, from [semantic release](https://github.com/semantic-release/semantic-release), shows which commit message gets you which release type when `semantic-release` runs (using the default configuration):

  | Commit message                                                                                                                                                                                   | Release type                                                                                                    |
  | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- |
  | `fix(pencil): stop graphite breaking when too much pressure applied`                                                                                                                             | ~~Patch~~ Fix Release, Default release                                                                          |
  | `feat(pencil): add 'graphiteWidth' option`                                                                                                                                                       | ~~Minor~~ Feature Release                                                                                       |
  | `perf(pencil): remove graphiteWidth option`<br><br>`BREAKING CHANGE: The graphiteWidth option has been removed.`<br>`The default graphite width of 10mm is always used for performance reasons.` | ~~Major~~ Breaking Release <br /> (Note that the `BREAKING CHANGE: ` token must be in the footer of the commit) |


  To generate the rst files source files for documentation, run
  ```bash
  sphinx-apidoc -o doc_template/source/ src
  ```
  Then to create the documentation HTML files, run
  ```bash
  sphinx-build -b html doc_template/source/ doc_template/build/html
  ```
  More info on sphinx installation can be found [here](https://www.sphinx-doc.org/en/master/usage/installation.html).


pkgId: 0439119123fcada13f348b66716a804b2de3252226e5a13692670a81e5f5409e
name: python-aind-data-access-api
arch: src
version: 0.15.0
epoch: 0
release: 1
summary: API to interact with a few AIND databases
url: https://pypi.org/project/aind-data-access-api/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-data-access-api-0.15.0-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)
  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)

  API to interact with a few AIND databases. We have two primary databases:

  1. A document database (DocDB) to store
     unstructured json documents. The DocDB contains AIND metadata.
  2. A relational database to store structured tables.

  More information can be found at [readthedocs](https://aind-data-access-api.readthedocs.io).


pkgId: 2fabe681a6151f6b62a2a71f243e3a6cf91f0b62c2b0b8344b6f412d2a5a112b
name: python-aind-data-schema
arch: src
version: 1.1.0
epoch: 0
release: 1
summary: A library that defines AIND data schema and validates JSON files.
url: https://pypi.org/project/aind-data-schema/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-data-schema-1.1.0-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)
  [![Documentation Status](https://readthedocs.org/projects/aind-data-schema/badge/?version=latest)](https://aind-data-schema.readthedocs.io/en/latest/?badge=latest)

  A library that defines [AIND](https://alleninstitute.org/what-we-do/brain-science/research/allen-institute-neural-dynamics/) data schema and validates JSON files.

  User documentation available on [readthedocs](https://aind-data-schema.readthedocs.io/en/latest/).



  This repository contains the schemas needed to ingest and validate metadata that are essential to ensuring [AIND](https://alleninstitute.org/what-we-do/brain-science/research/allen-institute-neural-dynamics/) data collection is completely reproducible. Our general approach is to semantically version core schema classes and include those version numbers in serialized metadata so that we can flexibly evolve the schemas over time without requiring difficult data migrations. In the future, we will provide a browsable list of these classes rendered to [JSON Schema](https://json-schema.org/), including all historic versions.

  Be aware that this package is still under heavy preliminary development. Expect breaking changes regularly, although we will communicate these through semantic versioning.

  A simple example:

  ```python
  import datetime

  from aind_data_schema.core.subject import BreedingInfo, Housing, Subject
  from aind_data_schema_models.organizations import Organization
  from aind_data_schema_models.species import Species

  t = datetime.datetime(2022, 11, 22, 8, 43, 00)

  s = Subject(
     species=Species.MUS_MUSCULUS,
     subject_id="12345",
     sex="Male",
     date_of_birth=t.date(),
     genotype="Emx1-IRES-Cre;Camk2a-tTA;Ai93(TITL-GCaMP6f)",
     housing=Housing(home_cage_enrichment=["Running wheel"], cage_id="123"),
     background_strain="C57BL/6J",
     source=Organization.AI,
     breeding_info=BreedingInfo(
           breeding_group="Emx1-IRES-Cre(ND)",
           maternal_id="546543",
           maternal_genotype="Emx1-IRES-Cre/wt; Camk2a-tTa/Camk2a-tTA",
           paternal_id="232323",
           paternal_genotype="Ai93(TITL-GCaMP6f)/wt",
     ),
  )

  s.write_standard_file() # writes subject.json
  ```

  ```json
  {
     "describedBy": "https://raw.githubusercontent.com/AllenNeuralDynamics/aind-data-schema/main/src/aind_data_schema/core/subject.py",
     "schema_version": "0.5.6",
     "subject_id": "12345",
     "sex": "Male",
     "date_of_birth": "2022-11-22",
     "genotype": "Emx1-IRES-Cre;Camk2a-tTA;Ai93(TITL-GCaMP6f)",
     "species": {
        "name": "Mus musculus",
        "abbreviation": null,
        "registry": {
           "name": "National Center for Biotechnology Information",
           "abbreviation": "NCBI"
        },
        "registry_identifier": "10090"
     },
     "alleles": [],
     "background_strain": "C57BL/6J",
     "breeding_info": {
        "breeding_group": "Emx1-IRES-Cre(ND)",
        "maternal_id": "546543",
        "maternal_genotype": "Emx1-IRES-Cre/wt; Camk2a-tTa/Camk2a-tTA",
        "paternal_id": "232323",
        "paternal_genotype": "Ai93(TITL-GCaMP6f)/wt"
     },
     "source": {
        "name": "Allen Institute",
        "abbreviation": "AI",
        "registry": {
           "name": "Research Organization Registry",
           "abbreviation": "ROR"
        },
        "registry_identifier": "03cpe7c52"
     },
     "rrid": null,
     "restrictions": null,
     "wellness_reports": [],
     "housing": {
        "cage_id": "123",
        "room_id": null,
        "light_cycle": null,
        "home_cage_enrichment": [
           "Running wheel"
        ],
        "cohoused_subjects": []
     },
     "notes": null
  }
  ```



  To install the latest version:
  ```
  pip install aind-data-schema
  ```

  Every merge to the `main` branch is automatically tagged with a new major/minor/patch version and uploaded to PyPI. To upgrade to the latest version:
  ```
  pip install aind-data-schema --upgrade
  ```


  If you've found a bug in the schemas or would like to make a minor change, open an [issue](https://github.com/AllenNeuralDynamics/aind-data-schema/issues) and please use the provided [templates](https://github.com/AllenNeuralDynamics/aind-metadata-mapper/issues/new/choose).
  If you'd like to propose a large change or addition, or generally have a question about how things work, head start a new [Discussion](https://github.com/AllenNeuralDynamics/aind-data-schema/discussions)!



  Controlled vocabularies and other enumerated lists are maintained in a separate repository: [aind-data-schema-models](https://github.com/AllenNeuralDynamics/aind-data-schema-models). This allows us to specify these lists without changing aind-data-schema. Controlled vocabularies include lists of organizations, manufacturers, species, modalities, platforms, units, harp devices, and registries.

  To upgrade to the latest data models version:
  ```
  pip install aind-data-schema-models --upgrade
  ```


  Contributions are more than welcome for this project! If you'd like to develop the code, please follow the standards outlined in the [contribution guide](https://github.com/AllenNeuralDynamics/aind-data-schema/blob/main/CONTRIBUTING.md).




  To generate the rst files source files for documentation, run:

  ```
  sphinx-apidoc -o docs/source/ src
  ```

  Then to create the documentation html files, run:
  ```
  sphinx-build -b html docs/source/ docs/build/html
  ```

  More info on sphinx installation can be found here: https://www.sphinx-doc.org/en/master/usage/installation.html


pkgId: fb7d6b1b9ccab741aae8d5b0388ad2bf434f77e83b69a661ecb712114f148f2b
name: python-aind-data-schema-models
arch: src
version: 0.5.6
epoch: 0
release: 1
summary: Generated from aind-library-template
url: https://pypi.org/project/aind-data-schema-models/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-data-schema-models-0.5.6-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)
  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)
  ![Interrogate](https://img.shields.io/badge/interrogate-100.0%25-brightgreen)
  ![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen?logo=codecov)
  ![Python](https://img.shields.io/badge/python->=3.8-blue?logo=python)


  To install from pypi, run
  ```bash
  pip install aind-data-schema-models
  ```

  To install from source, in the root directory, run
  ```bash
  pip install -e .
  ```

  To develop the code, run
  ```bash
  pip install -e .[dev]
  ```





  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```bash
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```bash
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```bash
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```bash
  black .
  ```

  - Use **isort** to automatically sort import statements:
  ```bash
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```text
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bugfix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests



  The table below, from [semantic release](https://github.com/semantic-release/semantic-release), shows which commit message gets you which release type when `semantic-release` runs (using the default configuration):

  | Commit message                                                                                                                                                                                   | Release type                                                                                                    |
  | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- |
  | `fix(pencil): stop graphite breaking when too much pressure applied`                                                                                                                             | ~~Patch~~ Fix Release, Default release                                                                          |
  | `feat(pencil): add 'graphiteWidth' option`                                                                                                                                                       | ~~Minor~~ Feature Release                                                                                       |
  | `perf(pencil): remove graphiteWidth option`<br><br>`BREAKING CHANGE: The graphiteWidth option has been removed.`<br>`The default graphite width of 10mm is always used for performance reasons.` | ~~Major~~ Breaking Release <br /> (Note that the `BREAKING CHANGE: ` token must be in the footer of the commit) |


  To generate the rst files source files for documentation, run
  ```bash
  sphinx-apidoc -o doc_template/source/ src
  ```
  Then to create the documentation HTML files, run
  ```bash
  sphinx-build -b html doc_template/source/ doc_template/build/html
  ```
  More info on sphinx installation can be found [here](https://www.sphinx-doc.org/en/master/usage/installation.html).


pkgId: 8167d87465bbecec380cab25e192206a9ab42e3828b82163b886c0be3be2adc6
name: python-aind-data-schema-models
arch: src
version: 0.6.2
epoch: 0
release: 1
summary: Generated from aind-library-template
url: https://pypi.org/project/aind-data-schema-models/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-data-schema-models-0.6.2-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)
  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)
  ![Interrogate](https://img.shields.io/badge/interrogate-100.0%25-brightgreen)
  ![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen?logo=codecov)
  ![Python](https://img.shields.io/badge/python->=3.8-blue?logo=python)


  To install from pypi, run
  ```bash
  pip install aind-data-schema-models
  ```

  To install from source, in the root directory, run
  ```bash
  pip install -e .
  ```

  To develop the code, run
  ```bash
  pip install -e .[dev]
  ```





  The model class files, `brain_atlas.py` etc, are auto-generated. **You should never need to modify the class files directly.**

  Instead, take a look at the `jinja2` templates in the folder `_generators/templates`. The filename of the template is used to pull the corresponding `.csv` file and populate the `data` DataFrame. In the template you can pull data from the various columns and use them to populate each of the fields in your class.

  To re-build all the models, run the `run_all.sh` bash script in the root folder, which loops through the template files and runs them through the `generate_code` function.

  There are a few special cases, e.g. if data are missing in columns they will show up as `float: nan`. See the `organizations.txt` template for examples of how to handle this.



  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```bash
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```bash
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```bash
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```bash
  black .
  ```

  - Use **isort** to automatically sort import statements:
  ```bash
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```text
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bugfix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests



  The table below, from [semantic release](https://github.com/semantic-release/semantic-release), shows which commit message gets you which release type when `semantic-release` runs (using the default configuration):

  | Commit message                                                                                                                                                                                   | Release type                                                                                                    |
  | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- |
  | `fix(pencil): stop graphite breaking when too much pressure applied`                                                                                                                             | ~~Patch~~ Fix Release, Default release                                                                          |
  | `feat(pencil): add 'graphiteWidth' option`                                                                                                                                                       | ~~Minor~~ Feature Release                                                                                       |
  | `perf(pencil): remove graphiteWidth option`<br><br>`BREAKING CHANGE: The graphiteWidth option has been removed.`<br>`The default graphite width of 10mm is always used for performance reasons.` | ~~Major~~ Breaking Release <br /> (Note that the `BREAKING CHANGE: ` token must be in the footer of the commit) |


  To generate the rst files source files for documentation, run
  ```bash
  sphinx-apidoc -o doc_template/source/ src
  ```
  Then to create the documentation HTML files, run
  ```bash
  sphinx-build -b html doc_template/source/ doc_template/build/html
  ```
  More info on sphinx installation can be found [here](https://www.sphinx-doc.org/en/master/usage/installation.html).


pkgId: 84840f68783007ed914f309a120dd37dbeda338ba0a6d00ac8d9697af8e398dd
name: python-aind-data-transfer
arch: src
version: 0.35.3
epoch: 0
release: 1
summary: Services for compression and transfer of aind-data to the cloud
url: https://pypi.org/project/aind-data-transfer/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-data-transfer-0.35.3-1.src.rpm
checksum_type: sha256
description:
  We are deprecating this library. We plan to drop support on 2024-08-01 and will archive the repository on 2024-09-01. In particular, we are:

  - Moving modality specific transformation ETL jobs into their own repositories. This will make dependency conflicts less likely.
  - Each modality specific transformation ETL should import [https://github.com/AllenNeuralDynamics/aind-data-transformation](aind-data-transformation) classes. See [aind-ephys-transformation](https://github.com/AllenNeuralDynamics/aind-ephys-transformation) as an exaple.
  - Metadata compilation is being moved to its own repository: [aind-metadata-mapper](https://github.com/AllenNeuralDynamics/aind-metadata-mapper).
  - These ETL jobs will run on the HPC and be managed by Airflow. The pipeline definition is in [aind-airflow-dags](https://github.com/AllenNeuralDynamics/aind-airflow-dags).

  Please reach out to the Scientific Computing Department with any questions or concerns.



  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)

  Tools for transferring large data to and between cloud storage providers.



  To upload data to aws s3, you may need to install and configure `awscli`. To upload data to gcp, you may need to install and configure `gsutil`.



  You may need to first install `pyminizip` from conda if getting errors on Windows: `conda install -c mzh pyminizip`

  - From PyPI: `pip install aind-data-transfer`
  - From source: `pip install -e .`



  - Run `pip install -e .[imaging]`
  - Run `./post_install.sh`



  - From PyPI: `pip install aind-data-transfer[ephys]`
  - From source `pip install -e .[ephys]`



  - Run `pip install -e .[full]`
  - Run `./post_install.sh`



  - Run `pip install -e .[dev]`
  - Run `./post_install.sh`


  To run scripts on a cluster, you need to install [dask-mpi](http://mpi.dask.org/en/latest/).
  This requires compiling [mpi4py](https://mpi4py.readthedocs.io/en/stable/install.html)
  with the MPI implementation used by your cluster (Open MPI, MPICH, etc).
  The following example is for the Allen Institute HPC, but should be applicable to other HPC systems.

  SSH into your cluster login node

  ```ssh user.name@hpc-login```

  On the Allen cluster, the MPI modules are only available on compute nodes, so SSH into a compute node (n256 chosen arbitrarily).

  ```ssh user.name@n256```

  Now load the MPI module and compiler. It is important that you use the latest MPI version and compiler, or else
  `dask-mpi` may not function properly.

  ```module load gcc/10.1.0-centos7 mpi/mpich-3.2-x86_64```

  Install mpi4py

  ```python -m pip install --no-cache-dir mpi4py```

  Now install dask-mpi

  ```python -m pip install dask_mpi --upgrade```






  The jobs can be defined inside a csv file. The first row of the csv file needs the following headers. Some are required for the job to run, and others are optional.

  Required

  ```
  s3_bucket: S3 Bucket name
  platform: One of [behavior, confocal, ecephys, exaSPIM, FIP, HCR, HSFP, mesoSPIM, merfish, MRI, multiplane-ophys, single-plane-ophys, SLAP2, smartSPIM] (pulled from the Platform.abbreviation field)
  modality: One of [behavior-videos, confocal, ecephys, fMOST, icephys, fib, merfish, MRI, ophys, slap, SPIM, trained-behavior] (pulled from the Modality.abbreviation field)
  subject_id: ID of the subject
  acq_datetime: Format can be either YYYY-MM-DD HH:mm:ss or MM/DD/YYYY I:MM:SS P
  ```

  One or more modalities need to be set. The csv headers can look like:
  ```
  modality0: [behavior-videos, confocal, ecephys, fMOST, icephys, fib, merfish, MRI, ophys, slap, SPIM, trained-behavior]
  modality0.source: path to modality0 raw data folder
  modality0.compress_raw_data (Optional): Override default compression behavior. True if ECEPHYS, False otherwise.
  modality0.skip_staging (Optional): If modality0.compress_raw_data is False and this is True, upload directly to s3. Default is False.
  modality0.extra_configs (Optional): path to config file to override compression defaults
  modality1 (Optional): [behavior-videos, confocal, ecephys, fMOST, icephys, fib, merfish, MRI, ophys, slap, SPIM, trained-behavior]
  modality1.source (Optional): path to modality0 raw data folder
  modality1.compress_raw_data (Optional): Override default compression behavior. True if ECEPHYS, False otherwise.
  modality1.skip_staging (Optional): If modality1.compress_raw_data is False and this is True, upload directly to s3. Default is False.
  modality1.extra_configs (Optional): path to config file to override compression defaults
  ...
  ```

  Somewhat Optional. Set the aws_param_store_name, but can define custom endpoints if desired

  ```
  aws_param_store_name: Path to aws_param_store_name to retrieve common endpoints
  ```

  If aws_param_store_name not set...

  ```
  codeocean_domain: Domain of Code Ocean platform
  codeocean_trigger_capsule_id: Launch a Code Ocean pipeline
  codeocean_trigger_capsule_version: Optional if Code Ocean pipeline is versioned
  metadata_service_domain: Domain name of the metadata service
  aind_data_transfer_repo_location: The link to this project
  video_encryption_password: Password with which to encrypt video files
  codeocean_api_token: Code Ocean token used to run a capsule
  ```

  Optional

  ```
  temp_directory: The job will use your OS's file system to create a temp directory as default. You can override the location by setting this parameter.
  behavior_dir: Location where behavior data associated with the raw data is stored.
  metadata_dir: Location where metadata associated with the raw data is stored.
  log_level: Default log level is warning. Can be set here.
  ```

  Optional Flags

  ```
  metadata_dir_force: Default is false. If true, the metadata in the metadata folder will be regarded as the source of truth vs. the metadata pulled from aind_metadata_service
  dry_run: Default is false. If set to true, it will perform a dry-run of the upload portion and not actually upload anything.
  force_cloud_sync: Use with caution. If set to true, it will sync the local raw data to the cloud even if the cloud folder already exists.
  compress_raw_data: Override all compress_raw_data defaults and set them to True.
  skip_staging: For each modality, copy uncompressed data directly to s3.
  ```

  After creating the csv file, you can run through the jobs with

  ```
  python -m aind_data_transfer.jobs.s3_upload_job --jobs-csv-file "path_to_jobs_list"
  ```

  Any Optional Flags attached will persist and override those set in the csv file. For example,

  ```
  python -m aind_data_transfer.jobs.s3_upload_job --jobs-csv-file "path_to_jobs_list" --dry-run --compress-raw-data
  ```

  will compress the raw data source and run a dry run for all jobs defined in the csv file.

  An example csv file might look like:

  ```
  data-source, s3-bucket, subject-id, modality, platform, acq-datetime, aws_param_store_name
  dir/data_set_1, some_bucket, 123454, ecephys, ecephys, 2020-10-10 14:10:10, /aind/data/transfer/endpoints
  dir/data_set_2, some_bucket2, 123456, ophys, multiplane-ophys, 2020-10-11 13:10:10, /aind/data/transfer/endpoints
  ```



  Read the previous section on defining a csv file. Retrieve the capsule id from the code ocean platform.
  You can add an extra parameter to define a custom processing capsule that gets executed aftet the data is uploaded:

  ```
  codeocean_process_capsule_id, data-source, s3-bucket, subject-id, modality, platform, acq-datetime, aws_param_store_name
  xyz-123-456, dir/data_set_1, some_bucket, 123454, ecephys, ecephys, 2020-10-10 14:10:10, /aind/data/transfer/endpoints
  xyz-123-456, dir/data_set_2, some_bucket2, 123456, ophys, multiplane-ophys, 2020-10-11 13:10:10, /aind/data/transfer/endpoints
  ```





  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):

  ```
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:

  ```
  black .
  ```

  - Use **isort** to automatically sort import statements:

  ```
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repo and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect the build system or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bug fix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests


pkgId: a89d59a7277336e771bca565804e4bb22fd6b372dd2887734e740f44c5ef02bd
name: python-aind-data-transfer-models
arch: src
version: 0.14.1
epoch: 0
release: 1
summary: Generated from aind-library-template
url: https://pypi.org/project/aind-data-transfer-models/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-data-transfer-models-0.14.1-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)
  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)
  ![Interrogate](https://img.shields.io/badge/interrogate-100.0%25-brightgreen)
  ![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen?logo=codecov)
  ![Python](https://img.shields.io/badge/python->=3.9-blue?logo=python)





  For more detailed examples, please check out the [readthedocs](https://aind-data-transfer-service.readthedocs.io/en/latest/UserGuide.html#using-the-rest-api).


  - From pypi, run
  ```bash
  pip install aind-data-transfer-models
  ```
  - From git, in the root directory, run
  ```bash
  pip install -e .
  ```

  To develop the code, run
  ```bash
  pip install -e .[dev]
  ```





  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```bash
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```bash
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```bash
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```bash
  black .
  ```

  - Use **isort** to automatically sort import statements:
  ```bash
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```text
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bugfix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests



  The table below, from [semantic release](https://github.com/semantic-release/semantic-release), shows which commit message gets you which release type when `semantic-release` runs (using the default configuration):

  | Commit message                                                                                                                                                                                   | Release type                                                                                                    |
  | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- |
  | `fix(pencil): stop graphite breaking when too much pressure applied`                                                                                                                             | ~~Patch~~ Fix Release, Default release                                                                          |
  | `feat(pencil): add 'graphiteWidth' option`                                                                                                                                                       | ~~Minor~~ Feature Release                                                                                       |
  | `perf(pencil): remove graphiteWidth option`<br><br>`BREAKING CHANGE: The graphiteWidth option has been removed.`<br>`The default graphite width of 10mm is always used for performance reasons.` | ~~Major~~ Breaking Release <br /> (Note that the `BREAKING CHANGE: ` token must be in the footer of the commit) |


pkgId: 64832eb07998821d9b8ef06ac193a62803f6a34c1e78276b0111acfce67ea69e
name: python-aind-dynamic-foraging-basic-analysis
arch: src
version: 0.3.4
epoch: 0
release: 1
summary: Generated from aind-library-template
url: https://pypi.org/project/aind-dynamic-foraging-basic-analysis/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-dynamic-foraging-basic-analysis-0.3.4-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)
  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)
  ![Interrogate](https://img.shields.io/badge/interrogate-100.0%25-brightgreen)
  ![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen?logo=codecov)
  ![Python](https://img.shields.io/badge/python->=3.7-blue?logo=python)




   - To use this template, click the green `Use this template` button and `Create new repository`.
   - After github initially creates the new repository, please wait an extra minute for the initialization scripts to finish organizing the repo.
   - To enable the automatic semantic version increments: in the repository go to `Settings` and `Collaborators and teams`. Click the green `Add people` button. Add `svc-aindscicomp` as an admin. Modify the file in `.github/workflows/tag_and_publish.yml` and remove the if statement in line 10. The semantic version will now be incremented every time a code is committed into the main branch.
   - To publish to PyPI, enable semantic versioning and uncomment the publish block in `.github/workflows/tag_and_publish.yml`. The code will now be published to PyPI every time the code is committed into the main branch.
   - The `.github/workflows/test_and_lint.yml` file will run automated tests and style checks every time a Pull Request is opened. If the checks are undesired, the `test_and_lint.yml` can be deleted. The strictness of the code coverage level, etc., can be modified by altering the configurations in the `pyproject.toml` file and the `.flake8` file.


  To use the software, in the root directory, run
  ```bash
  pip install -e .
  ```

  To develop the code, run
  ```bash
  pip install -e .[dev]
  ```





  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```bash
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```bash
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```bash
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```bash
  black .
  ```

  - Use **isort** to automatically sort import statements:
  ```bash
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```text
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bugfix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests



  The table below, from [semantic release](https://github.com/semantic-release/semantic-release), shows which commit message gets you which release type when `semantic-release` runs (using the default configuration):

  | Commit message                                                                                                                                                                                   | Release type                                                                                                    |
  | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- |
  | `fix(pencil): stop graphite breaking when too much pressure applied`                                                                                                                             | ~~Patch~~ Fix Release, Default release                                                                          |
  | `feat(pencil): add 'graphiteWidth' option`                                                                                                                                                       | ~~Minor~~ Feature Release                                                                                       |
  | `perf(pencil): remove graphiteWidth option`<br><br>`BREAKING CHANGE: The graphiteWidth option has been removed.`<br>`The default graphite width of 10mm is always used for performance reasons.` | ~~Major~~ Breaking Release <br /> (Note that the `BREAKING CHANGE: ` token must be in the footer of the commit) |


  To generate the rst files source files for documentation, run
  ```bash
  sphinx-apidoc -o doc_template/source/ src
  ```
  Then to create the documentation HTML files, run
  ```bash
  sphinx-build -b html doc_template/source/ doc_template/build/html
  ```
  More info on sphinx installation can be found [here](https://www.sphinx-doc.org/en/master/usage/installation.html).


pkgId: 8cbfc522ecf13ed8032f472435e63dae2e97c00a3cb07e64d79e972eab56cabf
name: python-aind-dynamic-foraging-basic-analysis
arch: src
version: 0.3.7
epoch: 0
release: 1
summary: Generated from aind-library-template
url: https://pypi.org/project/aind-dynamic-foraging-basic-analysis/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-dynamic-foraging-basic-analysis-0.3.7-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)
  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)
  ![Interrogate](https://img.shields.io/badge/interrogate-100.0%25-brightgreen)
  ![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen?logo=codecov)
  ![Python](https://img.shields.io/badge/python->=3.7-blue?logo=python)




   - To use this template, click the green `Use this template` button and `Create new repository`.
   - After github initially creates the new repository, please wait an extra minute for the initialization scripts to finish organizing the repo.
   - To enable the automatic semantic version increments: in the repository go to `Settings` and `Collaborators and teams`. Click the green `Add people` button. Add `svc-aindscicomp` as an admin. Modify the file in `.github/workflows/tag_and_publish.yml` and remove the if statement in line 10. The semantic version will now be incremented every time a code is committed into the main branch.
   - To publish to PyPI, enable semantic versioning and uncomment the publish block in `.github/workflows/tag_and_publish.yml`. The code will now be published to PyPI every time the code is committed into the main branch.
   - The `.github/workflows/test_and_lint.yml` file will run automated tests and style checks every time a Pull Request is opened. If the checks are undesired, the `test_and_lint.yml` can be deleted. The strictness of the code coverage level, etc., can be modified by altering the configurations in the `pyproject.toml` file and the `.flake8` file.


  To use the software, in the root directory, run
  ```bash
  pip install -e .
  ```

  To develop the code, run
  ```bash
  pip install -e .[dev]
  ```



  To create a dataframe of licks that has been annotated with licking bout starts/stops, cue responsive licks, reward triggered licks, and intertrial choices.
  ```
  import aind_dynamic_foraging_basic_analysis.licks.annotation as annotation
  df_licks = annotation.annotate_licks(nwb)
  ```

  You can then plot interlick interval analyses with:
  ```
  import aind_dynamic_foraging_basic_analysis.licks.plot_interlick_interval as pii


  pii.plot_interlick_interval(df_licks)


  pii.plot_interlick_interval(df_licks, categories='event')
  ```


  To create a figure with several licking pattern analyses:

  ```
  import aind_dynamic_foraging_basic_analysis.licks.lick_analysis as lick_analysis
  lick_analysis.plot_lick_analysis(nwb)
  ```


  To annotate the trials dataframe with trial by trial metrics:

  ```
  import aind_dynamic_foraging_basic_analysis.metrics.trial_metrics as tm
  df_trials = tm.compute_all_trial_metrics(nwb)
  ```


  ```
  import aind_dynamic_foraging_basic_analysis.plot.plot_session_scroller as pss
  pss.plot_session_scroller(nwb)
  ```

  To disable lick bout and other annotations:
  ```
  pss.plot_session_scroller(nwb,plot_bouts=False)
  ```

  This function will automatically plot FIP data if available. To change the processing method plotted use:
  ```
  pss.plot_session_scroller(nwb, processing="bright")
  ```

  To change which trial by trial metrics plotted:
  ```
  pss.plot_session_scroller(nwb, metrics=['response_rate'])
  ```


  You can use the `plot_fip` module to compute and plot PSTHs for the FIP data.

  To compare one channel to multiple event types
  ```
  from aind_dynamic_foraging_basic_analysis.plot import plot_fip as pf
  channel = 'G_1_dff-poly'
  rewarded_go_cues = nwb.df_trials.query('earned_reward == 1')['goCue_start_time_in_session'].values
  unrewarded_go_cues = nwb.df_trials.query('earned_reward == 0')['goCue_start_time_in_session'].values
  pf.plot_fip_psth_compare_alignments(
      nwb,
      {'rewarded goCue':rewarded_go_cues,'unrewarded goCue':unrewarded_go_cues},
      channel,
      censor=True
      )
  ```

  To compare multiple channels to the same event type:
  ```
  pf.plot_fip_psth(nwb, 'goCue_start_time')
  ```






  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```bash
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```bash
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```bash
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```bash
  black .
  ```

  - Use **isort** to automatically sort import statements:
  ```bash
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```text
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bugfix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests



  The table below, from [semantic release](https://github.com/semantic-release/semantic-release), shows which commit message gets you which release type when `semantic-release` runs (using the default configuration):

  | Commit message                                                                                                                                                                                   | Release type                                                                                                    |
  | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- |
  | `fix(pencil): stop graphite breaking when too much pressure applied`                                                                                                                             | ~~Patch~~ Fix Release, Default release                                                                          |
  | `feat(pencil): add 'graphiteWidth' option`                                                                                                                                                       | ~~Minor~~ Feature Release                                                                                       |
  | `perf(pencil): remove graphiteWidth option`<br><br>`BREAKING CHANGE: The graphiteWidth option has been removed.`<br>`The default graphite width of 10mm is always used for performance reasons.` | ~~Major~~ Breaking Release <br /> (Note that the `BREAKING CHANGE: ` token must be in the footer of the commit) |


  To generate the rst files source files for documentation, run
  ```bash
  sphinx-apidoc -o doc_template/source/ src
  ```
  Then to create the documentation HTML files, run
  ```bash
  sphinx-build -b html doc_template/source/ doc_template/build/html
  ```
  More info on sphinx installation can be found [here](https://www.sphinx-doc.org/en/master/usage/installation.html).


pkgId: fcdd8c3012a0382d3e6a0cee1135c8d273abd7406e62d6cbc89a66bdb9220332
name: python-aind-dynamic-foraging-data-utils
arch: src
version: 0.1.2
epoch: 0
release: 1
summary: Functions to help with postprocessing dynamic foraging data.
url: https://pypi.org/project/aind-dynamic-foraging-data-utils/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-dynamic-foraging-data-utils-0.1.2-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)
  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)
  ![Interrogate](https://img.shields.io/badge/interrogate-100.0%25-brightgreen)
  ![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen?logo=codecov)
  ![Python](https://img.shields.io/badge/python->=3.7-blue?logo=python)




  Purpose: Ingests NWB and spits out dataframes with the relevant information. Focused on dynamic foraging. Other tasks can branch and build task-specific utils.
  Inputs are nwbs, outputs are dataframes (tidy and not)
  Dependencies: xarray (includes numpy and pandas), scikit-learn (includes scipy), matplotlib





  To use the software, in the root directory, run
  ```bash
  pip install -e .
  ```

  To develop the code, run
  ```bash
  pip install -e .[dev]
  ```




  To load an NWB file
  ```
  import aind_dynamic_foraging_data_utils.nwb_utils as nwb_utils
  nwb = nwb_utils.load_nwb_from_filename(<filepath>)
  ```

  To extract a pandas dataframe of trials
  ```
  df_trials = nwb_utils.create_df_trials(nwb)
  ```

  To extract a pandas dataframe of events
  ```
  df_events = nwb_utils.create_events_df(nwb)
  ```

  To extract a pandas dataframe of photometry data
  ```
  fip_df = nwb_utils.create_fib_df(nwb)
  ```

  By default, all of these functions adjust timestamps such that t(0) is the time of the first go cue. If you wish to disable this feature, use `adjust_time=False`


  To align a data variable to a set of timepoints and create an event triggered response use the alignment module. For example to align FIP data to each go cue:

  ```
  import aind_dynamic_foraging_data_utils.alignment as alignment

  etr = alignment.event_triggered_response(
      fip_df.query('event == "<FIP channel>"'),
      "timestamps",
      "data",
      df_trials['goCue_start_time_in_session'].values,
      t_start = 0,
      t_end = 1,
      output_sampling_rate=40
      )
  ```





  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```bash
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```bash
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```bash
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```bash
  black .
  ```

  - Use **isort** to automatically sort import statements:
  ```bash
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```text
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bugfix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests



  The table below, from [semantic release](https://github.com/semantic-release/semantic-release), shows which commit message gets you which release type when `semantic-release` runs (using the default configuration):

  | Commit message                                                                                                                                                                                   | Release type                                                                                                    |
  | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- |
  | `fix(pencil): stop graphite breaking when too much pressure applied`                                                                                                                             | ~~Patch~~ Fix Release, Default release                                                                          |
  | `feat(pencil): add 'graphiteWidth' option`                                                                                                                                                       | ~~Minor~~ Feature Release                                                                                       |
  | `perf(pencil): remove graphiteWidth option`<br><br>`BREAKING CHANGE: The graphiteWidth option has been removed.`<br>`The default graphite width of 10mm is always used for performance reasons.` | ~~Major~~ Breaking Release <br /> (Note that the `BREAKING CHANGE: ` token must be in the footer of the commit) |


  To generate the rst files source files for documentation, run
  ```bash
  sphinx-apidoc -o doc_template/source/ src
  ```
  Then to create the documentation HTML files, run
  ```bash
  sphinx-build -b html doc_template/source/ doc_template/build/html
  ```
  More info on sphinx installation can be found [here](https://www.sphinx-doc.org/en/master/usage/installation.html).


pkgId: cf358c23da7095c7c85e304f32a2dc4d837976025c92c898f74b50b7e98b0179
name: python-aind-dynamic-foraging-models
arch: src
version: 0.11.1
epoch: 0
release: 1
summary: Generated from aind-library-template
url: https://pypi.org/project/aind-dynamic-foraging-models/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-dynamic-foraging-models-0.11.1-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)
  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)
  ![Interrogate](https://img.shields.io/badge/interrogate-96.7%25-brightgreen)
  ![Coverage](https://img.shields.io/badge/coverage-96%25-brightgreen?logo=codecov)
  ![Python](https://img.shields.io/badge/python->=3.9-blue?logo=python)

  AIND library for generative (RL) and descriptive (logistic regression) models of dynamic foraging tasks.

  User documentation available on [readthedocs](https://aind-dynamic-foraging-models.readthedocs.io/).




  RL agents that can perform any dynamic foraging task in [aind-behavior-gym](https://github.com/AllenNeuralDynamics/aind-behavior-gym) and can fit behavior using MLE.

  ![image](https://github.com/user-attachments/assets/b01a208e-b994-4857-a6da-66563bb0916b)



  ![image](classes_aind_dynamic_foraging_models.svg)
  - To add more generative models, please subclass [`DynamicForagingAgentMLEBase`](https://github.com/AllenNeuralDynamics/aind-dynamic-foraging-models/blob/11c858f93f67a0699ed23892364f3f51b08eab37/src/aind_dynamic_foraging_models/generative_model/base.py#L25C7-L25C34).


  - [`ForagerQLearning`](https://github.com/AllenNeuralDynamics/aind-dynamic-foraging-models/blob/f9ab39bbdc2cbea350e5a8f11d3f935d6674e08b/src/aind_dynamic_foraging_models/generative_model/forager_q_learning.py): Simple Q-learning agents that incrementally update Q-values.
      - Available `agent_kwargs`:
        ```python
          number_of_learning_rate: Literal[1, 2] = 2,
          number_of_forget_rate: Literal[0, 1] = 1,
          choice_kernel: Literal["none", "one_step", "full"] = "none",
          action_selection: Literal["softmax", "epsilon-greedy"] = "softmax",
        ```
  - [`ForagerLossCounting`](https://github.com/AllenNeuralDynamics/aind-dynamic-foraging-models/blob/f9ab39bbdc2cbea350e5a8f11d3f935d6674e08b/src/aind_dynamic_foraging_models/generative_model/forager_loss_counting.py): Loss counting agents with probabilistic `loss_count_threshold`.
      - Available `agent_kwargs`:
        ```python
          win_stay_lose_switch: Literal[False, True] = False,
          choice_kernel: Literal["none", "one_step", "full"] = "none",
        ```
  [Here is the full list](https://foraging-behavior-browser.allenneuraldynamics-test.org/RL_model_playground#all-available-foragers) of available foragers:

  ![image](https://github.com/user-attachments/assets/db2e3b6c-f888-496c-a12b-06e030499165)
  ![image](https://github.com/user-attachments/assets/4f7b669c-2f0e-49cc-8fb4-7fa948926e2e)




  - [Jupyter notebook](https://github.com/AllenNeuralDynamics/aind-dynamic-foraging-models/blob/main/notebook/demo_RL_agents.ipynb)
  - See also [these unittest functions](https://github.com/AllenNeuralDynamics/aind-dynamic-foraging-models/tree/main/tests).



  Play with the generative models [here](https://foraging-behavior-browser.allenneuraldynamics-test.org/RL_model_playground).

  ![image](https://github.com/user-attachments/assets/691986b0-114b-437c-8df9-3b7b18f83de9)



  See [this demo notebook.](https://github.com/AllenNeuralDynamics/aind-dynamic-foraging-models/blob/main/notebook/demo_logistic_regression.ipynb)





  ![Untitled](https://hanhou.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fe2dab5b7-862e-46a8-aa74-8194ed4315fc%2F54b9718d-6916-48ea-a337-550410a88254%2FUntitled.png?table=block&id=a2db5af7-f2d7-4485-af6c-01a0908546f6&spaceId=e2dab5b7-862e-46a8-aa74-8194ed4315fc&width=1340&userId=&cache=v2)

  $$
  logit(p(c_r)) \sim RewardedChoice+UnrewardedChoice
  $$



  ![Untitled](https://hanhou.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fe2dab5b7-862e-46a8-aa74-8194ed4315fc%2F9965a743-89e5-4335-af09-927d96f304e3%2FUntitled.png?table=block&id=1010abe7-4a81-429d-b1b0-5730630e508e&spaceId=e2dab5b7-862e-46a8-aa74-8194ed4315fc&width=1150&userId=&cache=v2)

  ![Untitled](https://hanhou.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fe2dab5b7-862e-46a8-aa74-8194ed4315fc%2Fcb2bbc09-8032-4eb5-8a55-bdadf9f42078%2FUntitled.png?table=block&id=c5cf0499-df10-4ebe-9e81-7eb5e504eede&spaceId=e2dab5b7-862e-46a8-aa74-8194ed4315fc&width=1150&userId=&cache=v2)

  $$
  logit(p(c_r)) \sim RewardedChoice+Choice
  $$



  ![Untitled](https://hanhou.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fe2dab5b7-862e-46a8-aa74-8194ed4315fc%2F44b49866-9f22-45fa-95db-0287a5a9bcfe%2FUntitled.png?table=block&id=20531979-9296-4b51-a41b-bab2e8615c84&spaceId=e2dab5b7-862e-46a8-aa74-8194ed4315fc&width=1340&userId=&cache=v2)

  $$
  logit(p(c_r)) \sim RewardedChoice+UnrewardedChoice+Choice
  $$



  ![Untitled](https://hanhou.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fe2dab5b7-862e-46a8-aa74-8194ed4315fc%2F7cd393c3-8c0a-4b63-a4c6-e84a00dff21a%2FUntitled.png?table=block&id=31e3450e-d60f-4c2a-9883-da91a5eaed9b&spaceId=e2dab5b7-862e-46a8-aa74-8194ed4315fc&width=1250&userId=&cache=v2)

  $$
  logit(p(c_r)) \sim Choice + Reward+ Choice*Reward
  $$



  - Ignored trials are removed

  | choice | reward | Choice | Reward | RewardedChoice | UnrewardedChoice | Choice * Reward |
  | --- | --- | --- | --- | --- | --- | --- |
  | L | yes | -1 | 1 | -1 | 0 | -1 |
  | L | no | -1 | -1 | 0 | -1 | 1 |
  | R | yes | 1 | 1 | 1 | 0 | 1 |
  | L | yes | -1 | 1 | -1 | 0 | -1 |
  | R | no | 1 | -1 | 0 | 1 | -1 |
  | R | yes | 1 | 1 | 1 | 0 | 1 |
  | L | no | -1 | -1 | 0 | -1 | 1 |

  Some observations:

  1. $RewardedChoice$ and $UnrewardedChoice$ are orthogonal
  2. $Choice = RewardedChoice + UnrewardedChoice$
  3. $Choice  * Reward = RewardedChoice -  UnrewardedChoice$



  |  | Su 2022 | Bari 2019 | Hattori 2019 | Miller 2021 |
  | --- | --- | --- | --- | --- |
  | Equivalent to | RewC + UnrC | RewC + (RewC + UnrC) | RewC + UnrC + (RewC + UnrC) | (RewC + UnrC) + (RewC - UnrC) + Rew |
  | Severity of multicollinearity | Not at all | Medium | Severe | Slight |
  | Interpretation | Like a RL model with different learning rates on reward and unrewarded trials. | Like a RL model that only updates on rewarded trials, plus a choice kernel (tendency to repeat previous choices). | Like a RL model that has different learning rates on reward and unrewarded trials, plus a choice kernel (the full RL model from the same paper). | Like a RL model that has symmetric learning rates for rewarded and unrewarded trials, plus a choice kernel. However, the $Reward $ term seems to be a strawman assumption, as it means “if I get reward on any side, I’ll choose the right side more”, which doesn’t make much sense. |
  | Conclusion | Probably the best | Okay | Not good due to the severe multicollinearity | Good |



  The choice of optimizer depends on the penality term, as listed [here](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html#sklearn.linear_model.LogisticRegression).

  - `lbfgs` - [`l2`, None]
  - `liblinear` - [`l1`, `l2`]
  - `newton-cg` - [`l2`, None]
  - `newton-cholesky` - [`l2`, None]
  - `sag` - [`l2`, None]
  - `saga` - [`elasticnet`, `l1`, `l2`, None]


  - Foraging model simulation, model recovery, etc.: https://github.com/hanhou/Dynamic-Foraging


  To install the software, run
  ```bash
  pip install aind-dynamic-foraging-models
  ```

  To develop the code, clone the repo to your local machine, and run
  ```bash
  pip install -e .[dev]
  ```





  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```bash
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```bash
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```bash
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```bash
  black .
  ```

  - Use **isort** to automatically sort import statements:
  ```bash
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```text
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bugfix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests



  The table below, from [semantic release](https://github.com/semantic-release/semantic-release), shows which commit message gets you which release type when `semantic-release` runs (using the default configuration):

  | Commit message                                                                                                                                                                                   | Release type                                                                                                    |
  | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- |
  | `fix(pencil): stop graphite breaking when too much pressure applied`                                                                                                                             | ~~Patch~~ Fix Release, Default release                                                                          |
  | `feat(pencil): add 'graphiteWidth' option`                                                                                                                                                       | ~~Minor~~ Feature Release                                                                                       |
  | `perf(pencil): remove graphiteWidth option`<br><br>`BREAKING CHANGE: The graphiteWidth option has been removed.`<br>`The default graphite width of 10mm is always used for performance reasons.` | ~~Major~~ Breaking Release <br /> (Note that the `BREAKING CHANGE: ` token must be in the footer of the commit) |


  To generate the rst files source files for documentation, run
  ```bash
  sphinx-apidoc -o doc_template/source/ src
  ```
  Then to create the documentation HTML files, run
  ```bash
  sphinx-build -b html doc_template/source/ doc_template/build/html
  ```
  More info on sphinx installation can be found [here](https://www.sphinx-doc.org/en/master/usage/installation.html).


pkgId: f5df65237463e7dfb4a64513e8809a6dae71cadb14563939d6a329a478fa9c52
name: python-aind-dynamic-foraging-models
arch: src
version: 0.11.2
epoch: 0
release: 1
summary: Generated from aind-library-template
url: https://pypi.org/project/aind-dynamic-foraging-models/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-dynamic-foraging-models-0.11.2-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)
  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)
  ![Interrogate](https://img.shields.io/badge/interrogate-96.7%25-brightgreen)
  ![Coverage](https://img.shields.io/badge/coverage-95%25-brightgreen?logo=codecov)
  ![Python](https://img.shields.io/badge/python->=3.9-blue?logo=python)

  AIND library for generative (RL) and descriptive (logistic regression) models of dynamic foraging tasks.

  User documentation available on [readthedocs](https://aind-dynamic-foraging-models.readthedocs.io/).




  RL agents that can perform any dynamic foraging task in [aind-behavior-gym](https://github.com/AllenNeuralDynamics/aind-behavior-gym) and can fit behavior using MLE.

  ![image](https://github.com/user-attachments/assets/b01a208e-b994-4857-a6da-66563bb0916b)



  ![image](classes_aind_dynamic_foraging_models.svg)
  - To add more generative models, please subclass [`DynamicForagingAgentMLEBase`](https://github.com/AllenNeuralDynamics/aind-dynamic-foraging-models/blob/11c858f93f67a0699ed23892364f3f51b08eab37/src/aind_dynamic_foraging_models/generative_model/base.py#L25C7-L25C34).


  - [`ForagerQLearning`](https://github.com/AllenNeuralDynamics/aind-dynamic-foraging-models/blob/f9ab39bbdc2cbea350e5a8f11d3f935d6674e08b/src/aind_dynamic_foraging_models/generative_model/forager_q_learning.py): Simple Q-learning agents that incrementally update Q-values.
      - Available `agent_kwargs`:
        ```python
          number_of_learning_rate: Literal[1, 2] = 2,
          number_of_forget_rate: Literal[0, 1] = 1,
          choice_kernel: Literal["none", "one_step", "full"] = "none",
          action_selection: Literal["softmax", "epsilon-greedy"] = "softmax",
        ```
  - [`ForagerLossCounting`](https://github.com/AllenNeuralDynamics/aind-dynamic-foraging-models/blob/f9ab39bbdc2cbea350e5a8f11d3f935d6674e08b/src/aind_dynamic_foraging_models/generative_model/forager_loss_counting.py): Loss counting agents with probabilistic `loss_count_threshold`.
      - Available `agent_kwargs`:
        ```python
          win_stay_lose_switch: Literal[False, True] = False,
          choice_kernel: Literal["none", "one_step", "full"] = "none",
        ```
  [Here is the full list](https://foraging-behavior-browser.allenneuraldynamics-test.org/RL_model_playground#all-available-foragers) of available foragers:

  ![image](https://github.com/user-attachments/assets/db2e3b6c-f888-496c-a12b-06e030499165)
  ![image](https://github.com/user-attachments/assets/4f7b669c-2f0e-49cc-8fb4-7fa948926e2e)




  - [Jupyter notebook](https://github.com/AllenNeuralDynamics/aind-dynamic-foraging-models/blob/main/notebook/demo_RL_agents.ipynb)
  - See also [these unittest functions](https://github.com/AllenNeuralDynamics/aind-dynamic-foraging-models/tree/main/tests).



  Play with the generative models [here](https://foraging-behavior-browser.allenneuraldynamics-test.org/RL_model_playground).

  ![image](https://github.com/user-attachments/assets/691986b0-114b-437c-8df9-3b7b18f83de9)



  See [this demo notebook.](https://github.com/AllenNeuralDynamics/aind-dynamic-foraging-models/blob/main/notebook/demo_logistic_regression.ipynb)





  ![Untitled](https://hanhou.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fe2dab5b7-862e-46a8-aa74-8194ed4315fc%2F54b9718d-6916-48ea-a337-550410a88254%2FUntitled.png?table=block&id=a2db5af7-f2d7-4485-af6c-01a0908546f6&spaceId=e2dab5b7-862e-46a8-aa74-8194ed4315fc&width=1340&userId=&cache=v2)

  $$
  logit(p(c_r)) \sim RewardedChoice+UnrewardedChoice
  $$



  ![Untitled](https://hanhou.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fe2dab5b7-862e-46a8-aa74-8194ed4315fc%2F9965a743-89e5-4335-af09-927d96f304e3%2FUntitled.png?table=block&id=1010abe7-4a81-429d-b1b0-5730630e508e&spaceId=e2dab5b7-862e-46a8-aa74-8194ed4315fc&width=1150&userId=&cache=v2)

  ![Untitled](https://hanhou.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fe2dab5b7-862e-46a8-aa74-8194ed4315fc%2Fcb2bbc09-8032-4eb5-8a55-bdadf9f42078%2FUntitled.png?table=block&id=c5cf0499-df10-4ebe-9e81-7eb5e504eede&spaceId=e2dab5b7-862e-46a8-aa74-8194ed4315fc&width=1150&userId=&cache=v2)

  $$
  logit(p(c_r)) \sim RewardedChoice+Choice
  $$



  ![Untitled](https://hanhou.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fe2dab5b7-862e-46a8-aa74-8194ed4315fc%2F44b49866-9f22-45fa-95db-0287a5a9bcfe%2FUntitled.png?table=block&id=20531979-9296-4b51-a41b-bab2e8615c84&spaceId=e2dab5b7-862e-46a8-aa74-8194ed4315fc&width=1340&userId=&cache=v2)

  $$
  logit(p(c_r)) \sim RewardedChoice+UnrewardedChoice+Choice
  $$



  ![Untitled](https://hanhou.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fe2dab5b7-862e-46a8-aa74-8194ed4315fc%2F7cd393c3-8c0a-4b63-a4c6-e84a00dff21a%2FUntitled.png?table=block&id=31e3450e-d60f-4c2a-9883-da91a5eaed9b&spaceId=e2dab5b7-862e-46a8-aa74-8194ed4315fc&width=1250&userId=&cache=v2)

  $$
  logit(p(c_r)) \sim Choice + Reward+ Choice*Reward
  $$



  - Ignored trials are removed

  | choice | reward | Choice | Reward | RewardedChoice | UnrewardedChoice | Choice * Reward |
  | --- | --- | --- | --- | --- | --- | --- |
  | L | yes | -1 | 1 | -1 | 0 | -1 |
  | L | no | -1 | -1 | 0 | -1 | 1 |
  | R | yes | 1 | 1 | 1 | 0 | 1 |
  | L | yes | -1 | 1 | -1 | 0 | -1 |
  | R | no | 1 | -1 | 0 | 1 | -1 |
  | R | yes | 1 | 1 | 1 | 0 | 1 |
  | L | no | -1 | -1 | 0 | -1 | 1 |

  Some observations:

  1. $RewardedChoice$ and $UnrewardedChoice$ are orthogonal
  2. $Choice = RewardedChoice + UnrewardedChoice$
  3. $Choice  * Reward = RewardedChoice -  UnrewardedChoice$



  |  | Su 2022 | Bari 2019 | Hattori 2019 | Miller 2021 |
  | --- | --- | --- | --- | --- |
  | Equivalent to | RewC + UnrC | RewC + (RewC + UnrC) | RewC + UnrC + (RewC + UnrC) | (RewC + UnrC) + (RewC - UnrC) + Rew |
  | Severity of multicollinearity | Not at all | Medium | Severe | Slight |
  | Interpretation | Like a RL model with different learning rates on reward and unrewarded trials. | Like a RL model that only updates on rewarded trials, plus a choice kernel (tendency to repeat previous choices). | Like a RL model that has different learning rates on reward and unrewarded trials, plus a choice kernel (the full RL model from the same paper). | Like a RL model that has symmetric learning rates for rewarded and unrewarded trials, plus a choice kernel. However, the $Reward $ term seems to be a strawman assumption, as it means “if I get reward on any side, I’ll choose the right side more”, which doesn’t make much sense. |
  | Conclusion | Probably the best | Okay | Not good due to the severe multicollinearity | Good |



  The choice of optimizer depends on the penality term, as listed [here](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html#sklearn.linear_model.LogisticRegression).

  - `lbfgs` - [`l2`, None]
  - `liblinear` - [`l1`, `l2`]
  - `newton-cg` - [`l2`, None]
  - `newton-cholesky` - [`l2`, None]
  - `sag` - [`l2`, None]
  - `saga` - [`elasticnet`, `l1`, `l2`, None]


  - Foraging model simulation, model recovery, etc.: https://github.com/hanhou/Dynamic-Foraging


  To install the software, run
  ```bash
  pip install aind-dynamic-foraging-models
  ```

  To develop the code, clone the repo to your local machine, and run
  ```bash
  pip install -e .[dev]
  ```





  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```bash
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```bash
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```bash
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```bash
  black .
  ```

  - Use **isort** to automatically sort import statements:
  ```bash
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```text
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bugfix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests



  The table below, from [semantic release](https://github.com/semantic-release/semantic-release), shows which commit message gets you which release type when `semantic-release` runs (using the default configuration):

  | Commit message                                                                                                                                                                                   | Release type                                                                                                    |
  | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- |
  | `fix(pencil): stop graphite breaking when too much pressure applied`                                                                                                                             | ~~Patch~~ Fix Release, Default release                                                                          |
  | `feat(pencil): add 'graphiteWidth' option`                                                                                                                                                       | ~~Minor~~ Feature Release                                                                                       |
  | `perf(pencil): remove graphiteWidth option`<br><br>`BREAKING CHANGE: The graphiteWidth option has been removed.`<br>`The default graphite width of 10mm is always used for performance reasons.` | ~~Major~~ Breaking Release <br /> (Note that the `BREAKING CHANGE: ` token must be in the footer of the commit) |


  To generate the rst files source files for documentation, run
  ```bash
  sphinx-apidoc -o doc_template/source/ src
  ```
  Then to create the documentation HTML files, run
  ```bash
  sphinx-build -b html doc_template/source/ doc_template/build/html
  ```
  More info on sphinx installation can be found [here](https://www.sphinx-doc.org/en/master/usage/installation.html).


pkgId: 2fbee7ed5677ed0d115995dd74311bfbca8eb7d16e6d371e708adedbf137f091
name: python-aind-ephys-utils
arch: src
version: 0.0.15
epoch: 0
release: 1
summary: Utilities library for aind ephys team.
url: https://pypi.org/project/aind-ephys-utils/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-ephys-utils-0.0.15-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)
  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)

  Helpful methods for exploring *in vivo* electrophysiology data.





  ```bash
  pip install aind-ephys-utils
  ```



  First, clone the repository. Then, from the `aind-ephys-utils` directory, run:

  ```bash
  pip install -e .[dev]
  ```

  **Note:** On recent versions of macOS, you'll need to put the last argument in quotation marks: `".[dev]"`





  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```bash
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```bash
  interrogate .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```bash
  black .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```bash
  flake8 .
  ```

  - Use **isort** to automatically sort import statements:
  ```bash
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```text
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bugfix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests


  To generate the rst files source files for documentation, run
  ```bash
  sphinx-apidoc -o doc_template/source/ src/aind_ephys_utils
  ```
  Then to create the documentation HTML files, run
  ```bash
  sphinx-build -b html doc_template/source/ doc_template/build/html
  ```
  More info on sphinx installation can be found [here](https://www.sphinx-doc.org/en/master/usage/installation.html).




  Members of the Allen Institute for Neural Dynamics can follow these steps to create a Code Ocean capsule from this repository:

  1. Click the **⨁ New Capsule** button and select "Clone from AllenNeuralDynamics"
  2. Type in `aind-ephys-utils` and click "Clone" (this step requires that your GitHub credentials are configured properly)
  3. Select a Python base image, and optionally change the compute resources
  4. Attach data to the capsule and any dependencies needed to load it (e.g. `pynwb`, `hdmf-zarr`)
  5. Add plotting dependencies (e.g. `ipympl`, `plotly`)
  6. Launch a Visual Studio Code cloud workstation

  Inside Visual Studio Code, select "New Terminal" from the "Terminal" menu and run the following commands:

  ```bash
  $ pip install -e .[dev]
  $ git checkout -b <name of feature branch>
  ```

  Now, you can create Jupyter notebooks in the "code" directory that can be used to test out new functions before updating the library. When prompted, install the "Python" extensions to be able to execute notebook cells.

  Once you've finished writing your code and tests, run the following commands:

  ```bash
  $ coverage run -m unittest discover && coverage report
  $ interrogate .
  $ black .
  $ flake8 .
  $ isort .
  ```

  Assuming all of these pass, you're ready to push your changes:

  ```bash
  $ git add <files to add>
  $ git commit -m "Commit message"
  $ git push -u origin <name of feature branch>
  ```

  After doing this, you can open a pull request on GitHub.

  Note that `git` will only track files inside the `aind-ephys-utils` directory, and will ignore everything else in the capsule. You will no longer be able to commit changes to the capsule itself, which is why this workflow should only be used for developing a library, and not for performing any type of data analysis.

  When you're done working, it's recommended to put the workstation on hold rather than shutting it down, in order to keep Visual Studio Code in the same state.


pkgId: af8feca9c63601e7e056e02779d2b9f5b71a7c4722806c4d47e422f93d2745b2
name: python-aind-exaspim-pipeline-utils
arch: src
version: 0.11.2
epoch: 0
release: 1
summary: AIND exaSPIM pipeline utilities.
url: https://pypi.org/project/aind-exaspim-pipeline-utils/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-exaspim-pipeline-utils-0.11.2-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)

  Code repository to be installed in exaSPIM processing capsules.



   - Wrapper code for ImageJ automation.
   - n5 to zarr converter to be run in a Code Ocean capsule.



  The ImageJ wrapper module contains Fiji macro templates and wrapper code to
  automatically run interest point detection and interest point based registration
  in the Code Ocean capsule. This functionality is set as the main entry point of
  the package if the whole package is invoked on the command line or the
  `aind_exaspim_pipeline` command is run.

  ```bash

  set -ex
  cd ~/capsule
  imagej_wrapper "$@"
  ```



  The N5 to zarr converter sets up a local dask cluster with multiple python processes
  as workers to read in an N5 dataset and write it out in a multiscale Zarr dataset.
  Both datasets may be local or directly on S3. AWS credentials must be available in the
  environment (Code Ocean credential assignment to environment variables).

  This implementation is based on dask.array (da).

  This command takes a manifest json file as the only command line argument or looks it
  up at the hard-wired `data/manifest/exaspim_manifest.json` location if not specified.

  To set up a code ocean capsule, use the following `run.sh` script:

  ```bash

  set -ex
  cd ~/capsule
  n5tozarr_da_converter "$@"
  ```



  To use the software, in the root directory, run
  ```bash
  pip install -e .
  ```

  To develop the code, run
  ```bash
  pip install -e .[dev]
  ```

  For n5tozarr and zarr multiscale conversion, install as
  ```bash
  pip install -e .[n5tozarr]
  ```





  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```bash
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```bash
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```bash
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```bash
  black .
  ```

  - Use **isort** to automatically sort import statements:
  ```bash
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```text
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bugfix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests


  To generate the rst files source files for documentation, run
  ```bash
  sphinx-apidoc -o doc_template/source/ src
  ```
  Then to create the documentation HTML files, run
  ```bash
  sphinx-build -b html doc_template/source/ doc_template/build/html
  ```
  More info on sphinx installation can be found [here](https://www.sphinx-doc.org/en/master/usage/installation.html).


pkgId: a105c7cb28ca78d1849a4676bfcd8063e863b8a6543cdc4258bfd85d2a1195d5
name: python-aind-flake8-extensions
arch: src
version: 0.6.2
epoch: 0
release: 1
summary: Generated from aind-library-template
url: https://pypi.org/project/aind-flake8-extensions/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-flake8-extensions-0.6.2-1.src.rpm
checksum_type: sha256
description:
  Install in your dev dependencies `aind-flake8-extensions`, make sure to pin to a release if you don't want to get random future additions.

  Add to your .flake8 file

  ```
  [flake8:local-plugins]
  extension =
      PF = aind_flake8_extensions.plugin:run_ast_checks
  ```


pkgId: 3cf86a06b0ea0bfb1d5757979254eb2d548c4a9f451a4802a5a71c44a3e3ccce
name: python-aind-log-utils
arch: src
version: 0.2.1
epoch: 0
release: 1
summary: Add logging to Code Ocean capsules
url: https://pypi.org/project/aind-log-utils/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-log-utils-0.2.1-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)
  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)
  ![Interrogate](https://img.shields.io/badge/interrogate-100.0%25-brightgreen)
  ![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen?logo=codecov)
  ![Python](https://img.shields.io/badge/python->=3.7-blue?logo=python)



  Typical programmatic usage of this library looks like this:
  ```python
  import logging
  from aind_log_utils import setup_logging

  setup_logging("my_process_name", mouse_id="mouse1",
                          session_name="session1")

  logging.info("my log message")
  ```


  To use the software, in the root directory, run
  ```bash
  pip install -e .
  ```

  To develop the code, run
  ```bash
  pip install -e .[dev]
  ```



  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```bash
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:
  [.flake8](.flake8)
  ```bash
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```bash
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```bash
  black .
  ```

  - Use **isort** to automatically sort import statements:
  ```bash
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```text
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bugfix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests



  The table below, from [semantic release](https://github.com/semantic-release/semantic-release), shows which commit message gets you which release type when `semantic-release` runs (using the default configuration):

  | Commit message                                                                                                                                                                                   | Release type                                                                                                    |
  | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- |
  | `fix(pencil): stop graphite breaking when too much pressure applied`                                                                                                                             | ~~Patch~~ Fix Release, Default release                                                                          |
  | `feat(pencil): add 'graphiteWidth' option`                                                                                                                                                       | ~~Minor~~ Feature Release                                                                                       |
  | `perf(pencil): remove graphiteWidth option`<br><br>`BREAKING CHANGE: The graphiteWidth option has been removed.`<br>`The default graphite width of 10mm is always used for performance reasons.` | ~~Major~~ Breaking Release <br /> (Note that the `BREAKING CHANGE: ` token must be in the footer of the commit) |


  To generate the rst files source files for documentation, run
  ```bash
  sphinx-apidoc -o docs/source/ src
  ```
  Then to create the documentation HTML files, run
  ```bash
  sphinx-build -b html docs/source/ docs/build/html
  ```
  More info on sphinx installation can be found [here](https://www.sphinx-doc.org/en/master/usage/installation.html).


pkgId: c8fe47c6e3c9b6e6059cd56ab1fdf1d7a11e9d9e4c4ab57ce798f4b8afd6cc8d
name: python-aind-metadata-mapper
arch: src
version: 0.19.0
epoch: 0
release: 1
summary: Package to manage mapping of source data into aind-data-schema metadata files.
url: https://pypi.org/project/aind-metadata-mapper/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-metadata-mapper-0.19.0-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)
  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)
  ![Interrogate](https://img.shields.io/badge/interrogate-100.0%25-brightgreen)
  ![Coverage](https://img.shields.io/badge/coverage-86%25-yellow?logo=codecov)
  ![Python](https://img.shields.io/badge/python->=3.10-blue?logo=python)

  Repository to contain code that will parse source files into aind-data-schema models.




  To use the software, in the root directory, run
  ```bash
  pip install -e .[all]
  ```

  It's possible to install just a small subset of dependencies. For example,
  ```bash
  pip install -e .[bergamo]
  ```

  To develop the code, run
  ```bash
  pip install -e .[dev]
  ```


  If you've found a bug in the schemas or would like to make a minor change, open an [issue](https://github.com/AllenNeuralDynamics/aind-metadata-mapper/issues) and please use the provided templates. If you'd like to propose a large change or addition, or generally have a question about how things work, head start a new Discussion!


  Contributions are more than welcome for this project! If you'd like to develop the code, please follow the standards outlined in the [contribution guide](https://github.com/AllenNeuralDynamics/aind-metadata-mapper/blob/dev/CONTRIBUTING.md).


  To generate the rst files source files for documentation, run
  ```bash
  sphinx-apidoc -o docs/source/ src
  ```
  Then to create the documentation HTML files, run
  ```bash
  sphinx-build -b html docs/source/ docs/build/html
  ```
  More info on sphinx installation can be found [here](https://www.sphinx-doc.org/en/master/usage/installation.html).


  More information including a user guide and contributor guidelines can be found at [readthedocs](https://aind-metadata-mapper.readthedocs.io/en/latest/).


pkgId: 80e3b83510d867206cf19171fdc4ed17d66e6b2d3be51932517148935c13a9f9
name: python-aind-metadata-service
arch: src
version: 0.14.18
epoch: 0
release: 1
summary: REST service to retrive metadata from databases.
url: https://pypi.org/project/aind-metadata-service/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-metadata-service-0.14.18-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)

  REST service to retrieve metadata from databases.





  Can be pip installed using `pip install aind-metadata-service[server]`.

  Installing `pyodbc`.
  - You may need to install `unixodbc-dev`. You can follow this [https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver16](link) for instructions depending on your os.

  - You may need to run `docker system prune` before building the docker image if you're getting erros running apt-get:
  ```



  ```



  Can be pip installed with `pip install aind-metadata-service[client]`



  In the root directory, run
  ```
  pip install -e .[dev]
  ```





  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```
  black .
  ```

  - Use **isort** to automatically sort import statements:
  ```
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repo and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect the build system or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bug fix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests


  To generate the rst files source files for documentation, run
  ```
  sphinx-apidoc -o doc_template/source/ src
  ```
  Then to create the documentation html files, run
  ```
  sphinx-build -b html doc_template/source/ doc_template/build/html
  ```
  More info on sphinx installation can be found here: https://www.sphinx-doc.org/en/master/usage/installation.html


  There are 6 possible status code responses for aind-metadata-service:
  - **200**: successfully retrieved valid data without any problems.
  - **406**: successfully retrieved some data, but failed to validate against pydantic models.
  - **404**: found no data that matches query.
  - **300**: queried the server, but more items were returned than expected.
  - **503**: failed to connect to labtracks/sharepoint servers.
  - **500**: successfully connected to labtracks/sharepoint, but some other server error occurred.
  These status codes are defined in StatusCodes enum in response_handler.py


pkgId: 3fd33a68399b06cff9861f47a5a0772d855e78bb557b1873f2ea184190dc7112
name: python-aind-metadata-validator
arch: src
version: 0.7.7
epoch: 0
release: 1
summary: Generated from aind-library-template
url: https://pypi.org/project/aind-metadata-validator/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-metadata-validator-0.7.7-1.src.rpm
checksum_type: sha256
description:
  This package includes helper functions for validating metadata from `aind-data-schema`, individual files in a metadata.json file, and the fields within each file.

  All validation returns a `MetadataState` enum, see `utils.py`





  Use aind-data-access-api [todo]



  You can get the entire redshift status table by running:

  ```
  from aind_data_access_api.rds_tables import RDSCredentials
  from aind_data_access_api.rds_tables import Client
  import pandas as pd

  DEV_OR_PROD = "dev" if "test" in API_GATEWAY_HOST else "prod"
  REDSHIFT_SECRETS = f"/aind/{DEV_OR_PROD}/redshift/credentials/readwrite"
  RDS_TABLE_NAME = f"metadata_status_{DEV_OR_PROD}"

  rds_client = Client(
          credentials=RDSCredentials(
              aws_secrets_name=REDSHIFT_SECRETS
          ),
      )

  class MetadataState(int, Enum):
      VALID = 2  # validates as it's class
      PRESENT = 1  # present
      OPTIONAL = 0  # missing, but it's optional
      MISSING = -1  # missing, and it's required
      EXCLUDED = -2  # excluded for all modalities in the metadata
      CORRUPT = -3  # corrupt, can't be loaded from json


  def _get_status() -> pd.DataFrame:
      """Get the status of the metadata
      """
      response = rds_client.read_table(RDS_TABLE_NAME)

      
      return response
  ```



  Returns a dictionary where each key is `metadata`, a `file`, or a `file.field` and the value is the `MetadataState`.

  ```
  from aind_metadata_validator.metadata_validator import validate_metadata

  m = Metadata()

  results_df = validate_metadata(m.model_dump())
  ```





  Two code ocean capsules run the sync nightly: https://codeocean.allenneuraldynamics.org/capsule/0257223/tree and https://codeocean.allenneuraldynamics-test.org/capsule/3640490/tree



  The package also includes a function `run()` in `sync.py` that will validate the entire DocDB and push the results to redshift.

  `pip install aind-metadata-validator`

  ```
  from aind_metadata_validator.sync import run

  run()
  ```


pkgId: bd18c2fbb91756d207753bced97a7966d69424bf089d8eeccf6ad3303a4c3bad
name: python-aind-mri-targeting
arch: src
version: 0.0.14
epoch: 0
release: 1
summary: Tools to plan and execute MRI-guided targeting experiments
url: https://pypi.org/project/aind-mri-targeting/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-mri-targeting-0.0.14-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)
  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)
  ![Interrogate](https://img.shields.io/badge/interrogate-46.2%25-red)
  ![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen?logo=codecov)
  ![Python](https://img.shields.io/badge/python->=3.7-blue?logo=python)



  To use the software, in the root directory, run
  ```bash
  pip install -e .
  ```

  To install notebooks, run
  ```bash
  install_notebooks [path]
  ```

  To develop the code, run
  ```bash
  pip install -e .[dev]
  ```





  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```bash
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```bash
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```bash
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```bash
  black .
  ```

  - Use **isort** to automatically sort import statements:
  ```bash
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```text
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bugfix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests



  The table below, from [semantic release](https://github.com/semantic-release/semantic-release), shows which commit message gets you which release type when `semantic-release` runs (using the default configuration):

  | Commit message                                                                                                                                                                                   | Release type                                                                                                    |
  | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- |
  | `fix(pencil): stop graphite breaking when too much pressure applied`                                                                                                                             | ~~Patch~~ Fix Release, Default release                                                                          |
  | `feat(pencil): add 'graphiteWidth' option`                                                                                                                                                       | ~~Minor~~ Feature Release                                                                                       |
  | `perf(pencil): remove graphiteWidth option`<br><br>`BREAKING CHANGE: The graphiteWidth option has been removed.`<br>`The default graphite width of 10mm is always used for performance reasons.` | ~~Major~~ Breaking Release <br /> (Note that the `BREAKING CHANGE: ` token must be in the footer of the commit) |


  To generate the rst files source files for documentation, run
  ```bash
  sphinx-apidoc -o doc_template/source/ src
  ```
  Then to create the documentation HTML files, run
  ```bash
  sphinx-build -b html doc_template/source/ doc_template/build/html
  ```
  More info on sphinx installation can be found [here](https://www.sphinx-doc.org/en/master/usage/installation.html).


pkgId: fad2dc8d056ac6e6af53e04b02c2af0aec982bf2f8608795fe3fdfb5fd833e1c
name: python-aind-mri-utils
arch: src
version: 0.0.45
epoch: 0
release: 1
summary: MRI utilities library for aind teams.
url: https://pypi.org/project/aind-mri-utils/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-mri-utils-0.0.45-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)
  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)
  ![Interrogate](https://img.shields.io/badge/interrogate-94.5%25-brightgreen)
  ![Coverage](https://img.shields.io/badge/coverage-52%25-red?logo=codecov)
  ![Python](https://img.shields.io/badge/python->=3.7-blue?logo=python)

  Library for aind mri utilities.


  To use the software, in the root directory, run
  ```bash
  pip install -e .
  ```

  To develop the code, run
  ```bash
  pip install -e .[dev]
  ```





  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```bash
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```bash
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```bash
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```bash
  black .
  ```

  - Use **isort** to automatically sort import statements:
  ```bash
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```text
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bugfix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests


  To generate the rst files source files for documentation, run
  ```bash
  sphinx-apidoc -o doc_template/source/ src
  ```
  Then to create the documentation HTML files, run
  ```bash
  sphinx-build -b html doc_template/source/ doc_template/build/html
  ```
  More info on sphinx installation can be found [here](https://www.sphinx-doc.org/en/master/usage/installation.html).


pkgId: 39c10adc416081fb8623581fb0bc584dc24e0fef91aab8929e7fa5c46f732659
name: python-aind-mri-utils
arch: src
version: 0.0.55
epoch: 0
release: 1
summary: MRI utilities library for aind teams.
url: https://pypi.org/project/aind-mri-utils/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-mri-utils-0.0.55-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)
  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)
  ![Interrogate](https://img.shields.io/badge/interrogate-94.7%25-brightgreen)
  ![Coverage](https://img.shields.io/badge/coverage-52%25-red?logo=codecov)
  ![Python](https://img.shields.io/badge/python->=3.7-blue?logo=python)

  Library for aind mri utilities.


  To use the software, in the root directory, run
  ```bash
  pip install -e .
  ```

  To develop the code, run
  ```bash
  pip install -e .[dev]
  ```





  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```bash
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```bash
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```bash
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```bash
  black .
  ```

  - Use **isort** to automatically sort import statements:
  ```bash
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```text
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bugfix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests


  To generate the rst files source files for documentation, run
  ```bash
  sphinx-apidoc -o doc_template/source/ src
  ```
  Then to create the documentation HTML files, run
  ```bash
  sphinx-build -b html doc_template/source/ doc_template/build/html
  ```
  More info on sphinx installation can be found [here](https://www.sphinx-doc.org/en/master/usage/installation.html).


pkgId: 4345f933abb4a49791416fe552de700495e69860e95b842dc59385a76374c801
name: python-aind-mri-utils
arch: src
version: 0.0.56
epoch: 0
release: 1
summary: MRI utilities library for aind teams.
url: https://pypi.org/project/aind-mri-utils/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-mri-utils-0.0.56-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)
  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)
  ![Interrogate](https://img.shields.io/badge/interrogate-94.9%25-brightgreen)
  ![Coverage](https://img.shields.io/badge/coverage-49%25-red?logo=codecov)
  ![Python](https://img.shields.io/badge/python->=3.7-blue?logo=python)

  Library for aind mri utilities.


  To use the software, in the root directory, run
  ```bash
  pip install -e .
  ```

  To develop the code, run
  ```bash
  pip install -e .[dev]
  ```





  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```bash
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```bash
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```bash
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```bash
  black .
  ```

  - Use **isort** to automatically sort import statements:
  ```bash
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```text
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bugfix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests


  To generate the rst files source files for documentation, run
  ```bash
  sphinx-apidoc -o doc_template/source/ src
  ```
  Then to create the documentation HTML files, run
  ```bash
  sphinx-build -b html doc_template/source/ doc_template/build/html
  ```
  More info on sphinx installation can be found [here](https://www.sphinx-doc.org/en/master/usage/installation.html).


pkgId: d752c9fb76b5fdc921ace1b96881ac0edff10ff3a0659972d68ffbbf38b3ffe3
name: python-aind-qcportal-schema
arch: src
version: 0.2.2
epoch: 0
release: 1
summary: Generated from aind-library-template
url: https://pypi.org/project/aind-qcportal-schema/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-qcportal-schema-0.2.2-1.src.rpm
checksum_type: sha256
description:
  Install with `pip install aind-qcportal-schema`



  This package includes classes that are expected by the [QC Portal](https://github.com/AllenNeuralDynamics/aind-qc-portal) for generating custom `QCMetric` value views. For example you can generate dropdowns with specific options, multi-select (checkbox) values with options, etc...


pkgId: 6e59ba9afb9eec98796254ff3ad51c150886b9b45f09a7c227073b5b4cd3c5e5
name: python-aind-registration-utils
arch: src
version: 0.0.2
epoch: 0
release: 1
summary: Generated from aind-library-template
url: https://pypi.org/project/aind-registration-utils/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-registration-utils-0.0.2-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)
  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)
  ![Interrogate](https://img.shields.io/badge/interrogate-71.9%25-red)
  ![Coverage](https://img.shields.io/badge/coverage-37%25-red?logo=codecov)
  ![Python](https://img.shields.io/badge/python->=3.7-blue?logo=python)




   - To use this template, click the green `Use this template` button and `Create new repository`.
   - After github initially creates the new repository, please wait an extra minute for the initialization scripts to finish organizing the repo.
   - To enable the automatic semantic version increments: in the repository go to `Settings` and `Collaborators and teams`. Click the green `Add people` button. Add `svc-aindscicomp` as an admin. Modify the file in `.github/workflows/tag_and_publish.yml` and remove the if statement in line 65. The semantic version will now be incremented every time a code is committed into the main branch.
   - To publish to PyPI, enable semantic versioning and uncomment the publish block in `.github/workflows/tag_and_publish.yml`. The code will now be published to PyPI every time the code is committed into the main branch.
   - The `.github/workflows/test_and_lint.yml` file will run automated tests and style checks every time a Pull Request is opened. If the checks are undesired, the `test_and_lint.yml` can be deleted. The strictness of the code coverage level, etc., can be modified by altering the configurations in the `pyproject.toml` file and the `.flake8` file.


  To use the software, in the root directory, run
  ```bash
  pip install -e .
  ```

  To develop the code, run
  ```bash
  pip install -e .[dev]
  ```





  There are several libraries used to run linters, check documentation, and run tests.

  - Please test your changes using the **coverage** library, which will run the tests and log a coverage report:

  ```bash
  coverage run -m unittest discover && coverage report
  ```

  - Use **interrogate** to check that modules, methods, etc. have been documented thoroughly:

  ```bash
  interrogate .
  ```

  - Use **flake8** to check that code is up to standards (no unused imports, etc.):
  ```bash
  flake8 .
  ```

  - Use **black** to automatically format the code into PEP standards:
  ```bash
  black .
  ```

  - Use **isort** to automatically sort import statements:
  ```bash
  isort .
  ```



  For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```text
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bugfix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests



  The table below, from [semantic release](https://github.com/semantic-release/semantic-release), shows which commit message gets you which release type when `semantic-release` runs (using the default configuration):

  | Commit message                                                                                                                                                                                   | Release type                                                                                                    |
  | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- |
  | `fix(pencil): stop graphite breaking when too much pressure applied`                                                                                                                             | ~~Patch~~ Fix Release, Default release                                                                          |
  | `feat(pencil): add 'graphiteWidth' option`                                                                                                                                                       | ~~Minor~~ Feature Release                                                                                       |
  | `perf(pencil): remove graphiteWidth option`<br><br>`BREAKING CHANGE: The graphiteWidth option has been removed.`<br>`The default graphite width of 10mm is always used for performance reasons.` | ~~Major~~ Breaking Release <br /> (Note that the `BREAKING CHANGE: ` token must be in the footer of the commit) |


  To generate the rst files source files for documentation, run
  ```bash
  sphinx-apidoc -o doc_template/source/ src
  ```
  Then to create the documentation HTML files, run
  ```bash
  sphinx-build -b html doc_template/source/ doc_template/build/html
  ```
  More info on sphinx installation can be found [here](https://www.sphinx-doc.org/en/master/usage/installation.html).


pkgId: 10141bd3146feb5eb9c4a3099ad7f69d66ba989403ca26b796f7612e0bbf4171
name: python-aind-segmentation-evaluation
arch: src
version: 0.1.48
epoch: 0
release: 1
summary: Python package for evaluating neuron segmentations in terms of the number of splits and merges
url: https://pypi.org/project/aind-segmentation-evaluation/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-segmentation-evaluation-0.1.48-1.src.rpm
checksum_type: sha256
description:
  [![License](https://img.shields.io/badge/license-MIT-brightgreen)](LICENSE)
  ![Code Style](https://img.shields.io/badge/code%20style-black-black)

  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)

  Python package for performing a skeleton-based evaluation of a predicted segmentation of neural arbors. This tool detects topological mistakes (i.e. splits and merges) in the predicted segmentation by comparing it to the ground truth skeleton. Once this comparison is complete, several statistics (e.g. edge accuracy, split count, merge count) are computed and returned in a dictionary. There is also an optional to write either tiff or swc files that highlight each topological mistake.




  Here is a simple example of evaluating a predicted segmentation. Note that this package supports a number of different input types, see documentation for details.

  ```python
  import os

  from aind_segmentation_evaluation.evaluate import run_evaluation
  from aind_segmentation_evaluation.conversions import volume_to_graph
  from tifffile import imread


  if __name__ == "__main__":

      
      data_dir = "./resources"
      target_graphs_dir = os.path.join(data_dir, "target_graphs")
      path_to_target_labels = os.path.join(data_dir, "target_labels.tif")
      pred_labels = imread(os.path.join(data_dir, "pred_labels.tif"))
      pred_graphs = volume_to_graph(pred_labels)

      
      stats = run_evaluation(
          target_graphs_dir,
          path_to_target_labels,
          pred_graphs,
          pred_labels,
          filetype="tif",
          output="tif",
          output_dir=data_dir,
          permute=[2, 1, 0],
          scale=[1.101, 1.101, 1.101],
      )

      
      print("Graph-based evaluation...")
      for key in stats.keys():
          print("   {}: {}".format(key, stats[key])

  ```


  To use the software, in the root directory, run
  ```bash
  pip install -e .
  ```

  To develop the code, run
  ```bash
  pip install -e .[dev]
  ```

  To install this package from PyPI, run
  ```bash
  pip install aind-segmentation-evaluation
  ```



  For internal members, please create a branch. For external members, please fork the repository and open a pull request from the fork. We'll primarily use [Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) style for commit messages. Roughly, they should follow the pattern:
  ```text
  <type>(<scope>): <short summary>
  ```

  where scope (optional) describes the packages affected by the code changes and type (mandatory) is one of:

  - **build**: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
  - **ci**: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
  - **docs**: Documentation only changes
  - **feat**: A new feature
  - **fix**: A bugfix
  - **perf**: A code change that improves performance
  - **refactor**: A code change that neither fixes a bug nor adds a feature
  - **test**: Adding missing tests or correcting existing tests


pkgId: 11b32b730806c72a41743f948fcc6b17dcc6116fff9ebc8f45eeb98974143f0a
name: python-aind-session
arch: src
version: 0.3.10
epoch: 0
release: 1
summary: User-friendly tools for accessing paths, metadata and assets related to AIND sessions.
url: https://pypi.org/project/aind-session/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-session-0.3.10-1.src.rpm
checksum_type: sha256
description:
  User-friendly tools for accessing paths, metadata and assets related to AIND sessions.

  [![PyPI](https://img.shields.io/pypi/v/aind-session.svg?label=PyPI&color=blue)](https://pypi.org/project/aind-session/)
  [![Python version](https://img.shields.io/pypi/pyversions/aind-session)](https://pypi.org/project/aind-session/)

  [![Coverage](https://img.shields.io/codecov/c/github/AllenNeuralDynamics/aind-session?logo=codecov)](https://app.codecov.io/github/AllenNeuralDynamics/aind-session)
  [![CI/CD](https://img.shields.io/github/actions/workflow/status/AllenNeuralDynamics/aind-session/publish.yml?label=CI/CD&logo=github)](https://github.com/AllenNeuralDynamics/aind-session/actions/workflows/publish.yml)
  [![GitHub issues](https://img.shields.io/github/issues/AllenNeuralDynamics/aind-session?logo=github)](https://github.com/AllenNeuralDynamics/aind-session/issues)


  This package is meant to provide easy access to session information needed for common tasks, in CodeOcean and beyond.

  - when interacting with the CodeOcean API, it uses and returns objects from the [official Python library](https://github.com/codeocean/codeocean-sdk-python) - we will avoid duplicating functionality provided by that package, except to make convenience functions with assumptions baked-in (for example, getting a client with environment variables and a default domain; finding all the assets for a particular session)
  - the core `Session` class should have a minimal set of methods and attributes that are common to sessions from all platforms - it should be fast to initialize and not do unnecessary work
  - extensions provide additional functionality (e.g. for specific modalities,
    metadata, databases) - at the moment, this is implemented via registration of
    namespaces ([like
    Pandas](https://pandas.pydata.org/docs/development/extending.html)), which
    allows for extending without subclassing (for examples, see [extensions](https://github.com/AllenNeuralDynamics/aind-session/blob/main/src/aind_session/extensions))
  - when searching for session data or information, methods should be exhaustive: for example, as naming conventions change, this package should support current and previous versions of names
  - when searching is unsuccessful, as much information as possible should be provided to the user via logging messages and exceptions, so they can understand the reasons for failure




  Credentials are required for:
    - AWS
      - in a capsule, use the `AWS Assumable Role - aind-codeocean-user` secret
      - alternatively, environment variables or a config file will
        be found automatically (see [boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html))
    - CodeOcean API
      - an access token is required with at least `Datasets: Read` scope (see
        [CodeOcean
        docs](https://docs.codeocean.com/user-guide/code-ocean-api/authentication)
        on how to create one)
      - in a capsule, this can be found under the `API credentials` secret
      - alternatively, `CODE_OCEAN_API_TOKEN` is the preferred environment variable name
          - if not found, the first environment variable with a value starting with `COP_` is used (case-insensitive)
        - the domain name defaults to `https://codeocean.allenneuraldynamics.org`, but can be overridden with a `CODE_OCEAN_DOMAIN` environment variable

  For development, environment variables can be provided in a `.env` file in the project root directory or the user's home directory.


  ```bash
  pip install aind_session
  ```


  ```python
  >>> import aind_session


  >>> session = aind_session.Session('ecephys_676909_2023-12-13_13-43-40')
  >>> session.platform
  'ecephys'
  >>> session.subject_id
  '676909'
  >>> session.dt
  datetime.datetime(2023, 12, 13, 13, 43, 40)
  >>> len(session.data_assets)            # doctest: +SKIP
  42
  >>> session.is_uploaded
  True
  >>> session.raw_data_asset.id
  '16d46411-540a-4122-b47f-8cb2a15d593a'
  >>> session.raw_data_dir.as_posix()
  's3://aind-ephys-data/ecephys_676909_2023-12-13_13-43-40'
  >>> session.modalities
  ('behavior', 'behavior_videos', 'ecephys')
  >>> session.docdb.keys()
  dict_keys(['_id', 'acquisition', 'created', 'data_description', 'describedBy', 'external_links', 'instrument', 'last_modified', 'location', 'metadata_status', 'name', 'procedures', 'processing', 'rig', 'schema_version', 'session', 'subject'])
  >>> session.docdb['subject']['genotype']
  'Pvalb-IRES-Cre/wt;Ai32(RCL-ChR2(H134R)_EYFP)/wt'


  >>> session.ecephys.is_sorted
  True
  >>> latest_asset = session.ecephys.sorter.kilosort2_5.sorted_data_assets[-1]
  >>> latest_asset.name                  # doctest: +SKIP
  'ecephys_676909_2023-12-13_13-43-40_sorted_2024-03-01_16-02-45'


  >>> a = aind_session.Session('ecephys_676909_2023-12-13_13-43-40')
  >>> b = aind_session.Session('ecephys_676909_2023-12-13_13-43-40_sorted_2024-03-01_16-02-45')
  >>> assert a == b, "Objects are equal if they refer to the same session ID"


  ```

  Search for session objects by subject ID, platform, date:
  ```python
  >>> import aind_session

  >>> sessions: tuple[aind_session.Session, ...] = aind_session.get_sessions(subject_id=676909)
  >>> sessions[0].platform
  'behavior'
  >>> sessions[0].date
  '2023-10-24'


  >>> aind_session.get_sessions(subject_id=676909, platform='ecephys')[0].platform
  'ecephys'


  >>> a = aind_session.get_sessions(subject_id=676909, date='2023-12-13')
  >>> b = aind_session.get_sessions(subject_id=676909, date='2023-12-13_13-43-40')
  >>> c = aind_session.get_sessions(subject_id=676909, date='2023-12-13 13:43:40')
  >>> d = aind_session.get_sessions(subject_id=676909, date='20231213')
  >>> e = aind_session.get_sessions(subject_id=676909, date='20231213_134340')
  >>> a == b == c == d == e
  True


  >>> aind_session.get_sessions(subject_id=676909, start_date='2023-12-13')
  (Session('ecephys_676909_2023-12-13_13-43-40'), Session('ecephys_676909_2023-12-14_12-43-11'))
  >>> aind_session.get_sessions(subject_id=676909, start_date='2023-12-13', end_date='2023-12-14_10-00-00')
  (Session('ecephys_676909_2023-12-13_13-43-40'),)

  ```


  See instructions in [CONTRIBUTING.md](https://github.com/AllenNeuralDynamics/aind-session/blob/main/CONTRIBUTING.md) and the [original template](https://github.com/AllenInstitute/copier-pdm-npc/blob/main/README.md)


pkgId: 42c28a5bd716e810dceb11252fe9eeb59cd2e353190a67846fc3c85a1a810f24
name: python-aind-session
arch: src
version: 0.3.11
epoch: 0
release: 1
summary: User-friendly tools for accessing paths, metadata and assets related to AIND sessions.
url: https://pypi.org/project/aind-session/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aind-session-0.3.11-1.src.rpm
checksum_type: sha256
description:
  User-friendly tools for accessing paths, metadata and assets related to AIND sessions.

  [![PyPI](https://img.shields.io/pypi/v/aind-session.svg?label=PyPI&color=blue)](https://pypi.org/project/aind-session/)
  [![Python version](https://img.shields.io/pypi/pyversions/aind-session)](https://pypi.org/project/aind-session/)

  [![Coverage](https://img.shields.io/codecov/c/github/AllenNeuralDynamics/aind-session?logo=codecov)](https://app.codecov.io/github/AllenNeuralDynamics/aind-session)
  [![CI/CD](https://img.shields.io/github/actions/workflow/status/AllenNeuralDynamics/aind-session/publish.yml?label=CI/CD&logo=github)](https://github.com/AllenNeuralDynamics/aind-session/actions/workflows/publish.yml)
  [![GitHub issues](https://img.shields.io/github/issues/AllenNeuralDynamics/aind-session?logo=github)](https://github.com/AllenNeuralDynamics/aind-session/issues)


  This package is meant to provide easy access to session information needed for common tasks, in CodeOcean and beyond. It joins the CodeOcean API (metadata about data assets, capsules, pipelines) with DocDB (metadata about session, subject, rig) and provides data at the level of a single experiment session, or a single subject (with zero or more sessions).

  - when interacting with the CodeOcean API, it uses and returns objects from the [official Python library](https://github.com/codeocean/codeocean-sdk-python) - we will avoid duplicating functionality provided by that package, except to make convenience functions with assumptions baked-in (for example, getting a client with environment variables and a default domain; finding all the assets for a particular session)
  - the core `Session` class should have a minimal set of methods and attributes that are common to sessions from all platforms - it should be fast to initialize and not do unnecessary work
  - extensions provide additional functionality (e.g. for specific modalities,
    metadata, databases) - at the moment, this is implemented via registration of
    namespaces ([like
    Pandas](https://pandas.pydata.org/docs/development/extending.html)), which
    allows for extending without subclassing (for examples, see [extensions](https://github.com/AllenNeuralDynamics/aind-session/blob/main/src/aind_session/extensions))
  - when searching for session data or information, methods should be exhaustive: for example, as naming conventions change, this package should support current and previous versions of names
  - when searching is unsuccessful, as much information as possible should be provided to the user via logging messages and exceptions, so they can understand the reasons for failure




  Credentials are required for:
    - AWS
      - in a capsule, use the `AWS Assumable Role - aind-codeocean-user` secret
      - alternatively, environment variables or a config file will
        be found automatically (see [boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html))
    - CodeOcean API
      - an access token is required with at least `Datasets: Read` scope (see
        [CodeOcean
        docs](https://docs.codeocean.com/user-guide/code-ocean-api/authentication)
        on how to create one)
      - in a capsule, this can be found under the `API credentials` secret
      - alternatively, `CODE_OCEAN_API_TOKEN` is the preferred environment variable name
          - if not found, the first environment variable with a value starting with `COP_` is used (case-insensitive)
        - the domain name defaults to `https://codeocean.allenneuraldynamics.org`, but can be overridden with a `CODE_OCEAN_DOMAIN` environment variable

  For development, environment variables can be provided in a `.env` file in the project root directory or the user's home directory.


  ```bash
  pip install aind_session
  ```


  ```python
  >>> import aind_session


  >>> session = aind_session.Session('ecephys_676909_2023-12-13_13-43-40')
  >>> session.platform
  'ecephys'
  >>> session.subject_id
  '676909'
  >>> session.dt
  datetime.datetime(2023, 12, 13, 13, 43, 40)
  >>> len(session.data_assets)            # doctest: +SKIP
  42
  >>> session.is_uploaded
  True
  >>> session.raw_data_asset.id
  '16d46411-540a-4122-b47f-8cb2a15d593a'
  >>> session.raw_data_dir.as_posix()
  's3://aind-ephys-data/ecephys_676909_2023-12-13_13-43-40'
  >>> session.modalities
  ('behavior', 'behavior_videos', 'ecephys')
  >>> session.docdb.keys()
  dict_keys(['_id', 'acquisition', 'created', 'data_description', 'describedBy', 'external_links', 'instrument', 'last_modified', 'location', 'metadata_status', 'name', 'procedures', 'processing', 'rig', 'schema_version', 'session', 'subject'])
  >>> session.docdb['subject']['genotype']
  'Pvalb-IRES-Cre/wt;Ai32(RCL-ChR2(H134R)_EYFP)/wt'


  >>> session.ecephys.is_sorted
  True
  >>> latest_asset = session.ecephys.sorter.kilosort2_5.sorted_data_assets[-1]
  >>> latest_asset.name                  # doctest: +SKIP
  'ecephys_676909_2023-12-13_13-43-40_sorted_2024-03-01_16-02-45'


  >>> a = aind_session.Session('ecephys_676909_2023-12-13_13-43-40')
  >>> b = aind_session.Session('ecephys_676909_2023-12-13_13-43-40_sorted_2024-03-01_16-02-45')
  >>> assert a == b, "Objects are equal if they refer to the same session ID"


  ```

  Search for session objects by subject ID, platform, date:
  ```python
  >>> import aind_session

  >>> sessions: tuple[aind_session.Session, ...] = aind_session.get_sessions(subject_id=676909)
  >>> sessions[0].platform
  'behavior'
  >>> sessions[0].date
  '2023-10-24'


  >>> aind_session.get_sessions(subject_id=676909, platform='ecephys')[0].platform
  'ecephys'


  >>> a = aind_session.get_sessions(subject_id=676909, date='2023-12-13')
  >>> b = aind_session.get_sessions(subject_id=676909, date='2023-12-13_13-43-40')
  >>> c = aind_session.get_sessions(subject_id=676909, date='2023-12-13 13:43:40')
  >>> d = aind_session.get_sessions(subject_id=676909, date='20231213')
  >>> e = aind_session.get_sessions(subject_id=676909, date='20231213_134340')
  >>> a == b == c == d == e
  True


  >>> aind_session.get_sessions(subject_id=676909, start_date='2023-12-13')
  (Session('ecephys_676909_2023-12-13_13-43-40'), Session('ecephys_676909_2023-12-14_12-43-11'))
  >>> aind_session.get_sessions(subject_id=676909, start_date='2023-12-13', end_date='2023-12-14_10-00-00')
  (Session('ecephys_676909_2023-12-13_13-43-40'),)

  ```


  See instructions in [CONTRIBUTING.md](https://github.com/AllenNeuralDynamics/aind-session/blob/main/CONTRIBUTING.md) and the [original template](https://github.com/AllenInstitute/copier-pdm-npc/blob/main/README.md)


