![github read me header](https://user-images.githubusercontent.com/8016073/203381867-f7b56861-04ca-4ae4-a5e6-53e97804817a.png)

# moonstream

[Website](https://moonstream.to)

[Join our Discord](https://discord.gg/pYE65FuNSz)

## What is Moonstream?

Moonstream creates economic infrastructure for web3 projects with a focus on blockchain games.

This repository contains Moonstream's complete data analysis stack. The emphasis of it is on collecting actionable data related to the blockchain. The repository contains:

1. Database management tools
2. Blockchain node management tools
3. Blockchain data crawlers
4. Access-controlled API which exposes collected data

## Important resources
1. [Documentation](https://docs.moonstream.to/)
2. [Status page](https://moonstream.to/status/)
3. [On-chain mechanics](https://github.com/bugout-dev/engine)
4. [How to create a dashboard to analyze a smart contract?](https://voracious-gerbil-120.notion.site/Creating-dashboard-for-a-smart-contract-288b1bfa64984b109b79895f69129fce)

## Who uses Moonstream?

People from different backgrounds who are interested in data, crypto and code.
Moonstream tools are often used by game designers and economists, data scientists, smart contract developers, backend engineers, and teams managing loyalty programs for blockchain projects.

Some projects currently using Moonstream:

1. [Laguna Games](https://laguna.games), makers of [Crypto Unicorns](https://cryptounicorns.fun)
2. [Game7](https://game7.io)
3. [Champions Ascension](https://www.champions.io/)

Please read [the Game Master's Guide to Moonstream Solutions](https://docs.google.com/document/d/1mjfF8SgRrAZvtCVVxB2qNSUcbbmrH6dTEYSMfHKdEgc/view) if you want to know how Moonstream tools are applied in web3 games.

[Moonworm tool](https://github.com/bugout-dev/moonworm) is used to build datasets of on-chain data related to market activity. The dataset with on-chain activity from the Ethereum NFT market (April 1 to September 25, 2021) is available [on Kaggle](https://www.kaggle.com/datasets/simiotic/ethereum-nfts). The full report on it is published on [GitHub](https://github.com/bugout-dev/moonstream/blob/main/datasets/nfts/papers/ethereum-nfts.pdf).

## Free software

Proprietary technologies are not inclusive technologies, and we believe in inclusion.

All of our technology is open source. This repository contains all the code that powers
https://moonstream.to. The code is licensed with the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0).

You are and _will always be_ free to host your own instance of Moonstream.

## Architecture

This monorepo contains the following components:

1. [`frontend`](./frontend): A web frontend for Moonstream. Allows users to create dashboards and monitor the activity of accounts and smart contracts on multiple blockchains. Built in [React](https://reactjs.org/).
2. [`backend`'](./backend): The Moonstream API allows users to programmatically consume data about transactions and events taking place on blockchains crawled by Moonstream. Built in [Python](https://www.python.org/) using [Fast API](https://fastapi.tiangolo.com/).
3. [`crawlers`](./crawlers): This part of the code base contains workers which extract data from blockchains, transaction pools, and other sources. We have many crawlers and each crawler can utilize a different tech stack.
4. [`db`](./db): Moonstream stores blockchain data in [Postgres](https://www.postgresql.org/). This
   directory contains the code we use to manage the schema in our Postgres database. For sources that
   send higher volumes of data, we use a separate Postgres database and interface with it using
   [Bugout](https://bugout.dev).

### Installation and setup

#### Run server with Docker Compose

If you want to deploy Moonstream in isolation against live services, then docker compose is your choice!

- Run script `backend/configs/docker_generate_env.bash` which prepare for you:
  - `backend/configs/docker.moonstreamapi.env` with environment variables
- Run script `db/configs/docker_generate_env.bash` which prepare for you:
  - `db/configs/alembic.moonstreamdb.ini` with postgresql uri

```bash
./backend/configs/docker_generate_env.bash
./db/configs/docker_generate_env.bash
```

- Run local setup

```bash
docker-compose up --build
```

## Contributing

We are working on contributing guidelines. In the meantime, please reach out to @zomglings on the [Moonstream Discord](https://discord.gg/pYE65FuNSz).


## Parcels

**Parcels** (**P**robably **A** **R**eally **C**omputationally **E**fficient **L**agrangian **S**imulator) is a set of Python classes and methods to create customisable particle tracking simulations using output from Ocean Circulation models. Parcels can be used to track passive and active particulates such as water, plankton, [plastic](http://www.topios.org/) and [fish](https://github.com/Jacketless/IKAMOANA).

![Arctic-SO-medusaParticles](https://github.com/OceanParcels/oceanparcels_website/blob/master/images/homepage.gif)

_Animation of virtual particles carried by ocean surface flow in the global oceans. The particles are advected with [Parcels](http://oceanparcels.org/) in data from the [NEMO Ocean Model](https://www.nemo-ocean.eu/)._

### Parcels manuscript and code

The manuscript detailing the first release of Parcels, version 0.9, has been published in [Geoscientific Model Development](https://www.geosci-model-dev.net/10/4175/2017/gmd-10-4175-2017.html) and can be cited as

_Lange, M and E van Sebille (2017) Parcels v0.9: prototyping a Lagrangian Ocean Analysis framework for the petascale age. Geoscientific Model Development, 10, 4175-4186. https://doi.org/10.5194/gmd-2017-167_

The manuscript detailing version 2.0 of Parcels is available at [Geoscientific Model Development](https://www.geosci-model-dev.net/12/3571/2019/gmd-12-3571-2019-discussion.html) and can be cited as:

_Delandmeter, P and E van Sebille (2019) The Parcels v2.0 Lagrangian framework: new field interpolation schemes. Geoscientific Model Development, 12, 3571-3584. https://doi.org/10.5194/gmd-12-3571-2019_

The manuscript detailing the performance of Parcels v2.4 is available at [Computers & Geosciences](https://doi.org/10.1016/j.cageo.2023.105322) and can be cited as:

_Kehl, C, PD Nooteboom, MLA Kaandorp and E van Sebille (2023) Efficiently simulating Lagrangian particles in large-scale ocean flows — Data structures and their impact on geophysical applications, Computers and Geosciences, 175, 105322. https://doi.org/10.1016/j.cageo.2023.105322_

### Further information

See [oceanparcels.org](http://oceanparcels.org/) for further information about [installing](https://docs.oceanparcels.org/en/latest/installation.html) and [running](https://docs.oceanparcels.org/en/latest/documentation.html) the Parcels code, as well as extended [documentation](https://docs.oceanparcels.org/en/latest/reference.html) of the methods and classes.

### Launch Parcels Tutorials on [mybinder.org](https://mybinder.org/v2/gh/OceanParcels/parcels/master?labpath=docs%2Fexamples%2Fparcels_tutorial.ipynb)

[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/OceanParcels/parcels/master?labpath=docs%2Fexamples%2Fparcels_tutorial.ipynb)
[![unit-tests](https://github.com/OceanParcels/parcels/actions/workflows/unit-tests.yml/badge.svg)](https://github.com/OceanParcels/parcels/actions/workflows/unit-tests.yml)
[![codecov](https://codecov.io/gh/OceanParcels/parcels/branch/master/graph/badge.svg)](https://codecov.io/gh/OceanParcels/parcels)
[![Anaconda-release](https://anaconda.org/conda-forge/parcels/badges/version.svg)](https://anaconda.org/conda-forge/parcels/)
[![Anaconda-date](https://anaconda.org/conda-forge/parcels/badges/latest_release_date.svg)](https://anaconda.org/conda-forge/parcels/)
[![Zenodo](https://zenodo.org/badge/DOI/10.5281/zenodo.823561.svg)](https://doi.org/10.5281/zenodo.823561)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/5353/badge)](https://bestpractices.coreinfrastructure.org/projects/5353)


![UDS Logo](https://www2.udsenterprise.com/static/img/logoUDSNav.png)

The main repository has been transfered to https://github.com/VirtualCable/openuds.
Please, update your references.

OpenUDS
=======

OpenUDS (Universal Desktop Services) is a multiplatform connection broker for:
- VDI: Windows and Linux virtual desktops administration and deployment
- App virtualization
- Desktop services consolidation
- ...

This is an Open Source project, initiated by Spanish Company Virtual Cable and released Open Source with the help of several Spanish Universities.

Please fell free to contribute to this project.

Notes
=====
* Master version is always under heavy development and it is not recommended for use, it will probably have unfixed bugs.  Please use the latest stable branch. (v3.6 right now)
* From 4.0 onwards (current master), OpenUDS has been splitted in several repositories and contains submodules. Remember to use "git clone --resursive ..." to fetch it ;-).
* 3.6 version is tested on Python 3.9, 3.10 and 3.11. It will probably work on 3.8 too.
* 4.0 Version will need Python 3.11 or higher. It uses new features only available on 3.10 or later, and is tested against 3.11. It will probably work on 3.10 too.
* We use "NamedTuples" in the code, and seems to be some kind of error on 3.11.1, so please do not use that python version: (Ref: https://github.com/python/cpython/issues/100098).


---

[![GitHub](https://img.shields.io/github/license/HazyResearch/meerkat)](https://img.shields.io/github/license/HazyResearch/meerkat)
[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)

Create interactive views of any dataset.

[**Website**](http://meerkat.wiki)
| [**Quickstart**](http://meerkat.wiki/docs/start/quickstart-df.html)
| [**Docs**](http://meerkat.wiki/docs/index.html)
| [**Contributing**](CONTRIBUTING.md)
| [**Discord**](https://discord.gg/pw8E4Q26Tq)
| [**Blogpost**](https://hazyresearch.stanford.edu/blog/2023-03-01-meerkat)

## ⚡ Quickstart

```bash
pip install meerkat-ml
```

**Next Steps**.
Check out our [Getting Started page](http://meerkat.wiki/docs/start/quickstart-df.html) and our [documentation](http://meerkat.wiki/docs/index.html) to start building with Meerkat.

## Why Meerkat?

Meerkat is an open-source Python library that helps users visualize, explore, and annotate any dataset. It is especially useful when processing unstructured data types (_e.g._ free text, PDFs, images, video) with machine learning models.

### ✏ Features and Design Principles

Here are four principles that inform Meerkat's design.

**(1) Low overhead.**  With four lines of Python, start interacting with any dataset.
- Zero-copy integrations with your preferred data abstractions: Pandas, Arrow, HF Datasets, Ibis, SQL.
- Limited data movement. With Meerkat, you interact with your data where it already lives: no uploads to external databases and no reformatting.

```python
import meerkat as mk
df = mk.from_csv("paintings.csv")
df["image"] = mk.files("image_url")
df
```

**(2) Diverse data types.** Visualize and annotate almost any data type in Meerkat interfaces: text, images, audio, video, MRI scans, PDFs, HTML, JSON.

**(3) "Intelligent" user interfaces.** Meerkat makes it easy to embed **machine learning models** (e.g. LLMs) within user interfaces to enable intelligent functionality such as searching, grouping and autocomplete.

```python
df["embedding"] = mk.embed(df["img"], engine="clip")
match = mk.gui.Match(df,
	against="embedding",
	engine="clip"
)
sorted_df = mk.sort(df,
	by=match.criterion.name,
	ascending=False
)
gallery = mk.gui.Gallery(sorted_df)
mk.gui.html.div([match, gallery])
```

**(4) Declarative (think: Seaborn), but also infinitely customizable and composable.**
Meerkat visualization components can be composed and customized to create new interfaces.

```python
plot = mk.gui.plotly.Scatter(df=plot_df, x="umap_1", y="umap_2",)

@mk.gui.reactive
def filter(selected: list, df: mk.DataFrame):
    return df[df.primary_key.isin(selected)]

filtered_df = filter(plot.selected, plot_df)
table = mk.gui.Table(filtered_df, classes="h-full")

mk.gui.html.flex([plot, table], classes="h-[600px]")
```

### ✨ Use cases where Meerkat shines
- _Exploratory analysis over unstructured data types._ [Demo](https://www.youtube.com/watch?v=a8FBT33QACQ)
- _Spot-checking the behavior of large language models (e.g. GPT-3)._  [Demo](https://www.youtube.com/watch?v=3ItA70qoe-o)
- _Identifying systematic errors made by machine learning models._ [Demo](https://youtu.be/4Kk_LZbNWNs)
- _Rapid labeling of validation data._

### 🤔 Use cases where Meerkat may not be the right fit

- _Are you only working with structured data (e.g. numerical and categorical variables)?_ Popular data visualization libraries (_e.g._ [Seaborn](https://seaborn.pydata.org/), [Matplotlib](https://matplotlib.org/)) are often sufficient. If you're looking for interactivity, [Plotly](https://plotly.com/) and [Streamlit](https://streamlit.io/) work well with structured data. Meerkat is differentiated in how it visualizes unstructured data types: long-form text, PDFs, HTML, images, video, audio...
- _Are you trying to make a straightforward demo of a machine learning model (single input/output, chatbot) and share with the world?_ [Gradio](https://gradio.app/) is likely a better fit! Though, if your demo involves visualizing lots of data, you may find Meerkat useful.
- _Are you trying to manually label tens of thousands of data points?_  If you are looking for a data labeling tool to use with a labeling team, there are great open source labeling solutions designed for this (_e.g._ [LabelStudio](https://labelstud.io/)). In contrast, Meerkat is great fit for teams/individuals without access to a large labeling workforce who are using pretrained models (_e.g._ GPT-3) and need to label validation data or in-context examples.

## ✉ About

Meerkat is being built by Machine Learning PhD students in the [Hazy Research](https://hazyresearch.stanford.edu) lab at Stanford. We're excited to build for a future where models will make it easier for teams to sift and reason through large volumes of unstructtured data effortlessly.

Please reach out to `kgoel [at] cs [dot] stanford [dot] edu, eyuboglu [at] stanford [dot] edu, and arjundd [at] stanford [dot] edu` if you would like to use Meerkat for a project, at your company or if you have any questions.


![logo](https://github.com/ArkMowers/arknights-mower/raw/main/logo.png)

# arknights-mower

[![GitHub License](https://img.shields.io/github/license/ArkMowers/arknights-mower?style=flat-square)](https://github.com/ArkMowers/arknights-mower/blob/master/LICENSE)
[![PyPI](https://img.shields.io/pypi/v/arknights-mower?style=flat-square)](https://pypi.org/project/arknights-mower/)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/arknights-mower?style=flat-square)](https://pypi.org/project/arknights-mower/)
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/ArkMowers/arknights-mower/Upload%20PyPI?style=flat-square)](https://github.com/ArkMowers/arknights-mower/actions/workflows/python-publish.yml)
![GitHub last commit (branch)](https://img.shields.io/github/last-commit/ArkMowers/arknights-mower/main?style=flat-square)
[![Code Climate maintainability](https://img.shields.io/codeclimate/maintainability/ArkMowers/arknights-mower?style=flat-square)](https://codeclimate.com/github/ArkMowers/arknights-mower)

7\*24 小时不间断长草，让你忘掉这个游戏！

## ⚠ 注意事项

- 本程序不支持国服以外的明日方舟区服，支持官服和 Bilibili 服。
- 原理上，使用本程序没有任何被判定为作弊并被封号的风险，但是作者不对使用此程序造成的任何损失负责。
- 开发组人数稀少，有时不太能及时反馈和修复 Bug，见谅一下。也欢迎更多有能力有意向的朋友参与。
- 本软件目前仅支持 1920\*1080 分辨率，使用夜神模拟器可以解决大部分问题

## 主要功能

- 自动打开《明日方舟》，支持官服和 Bilibili 服
- 读取基建心情，根据排班表**_动态换班_**力求最高工休比 :fire:
- 支持**_跑单操作_**，可设置全自动换班/仅跑单模式（不推荐使用) :fire:
- 自动使用菲亚梅塔恢复指定房间心情最低干员的心情并重回岗位 (N+1模式) :fire:
- 基建干员心情监控 :fire::fire:
- 每日基建报表记录
- 自定义条件换班（beta）
- 生息演算 :fire:
- 自动登录
  - 账户密码需要手动输入
- 支持调用 maa 执行除基建外的长草活动(日常/肉鸽/保全...)
- 支持邮件提醒

## 软件界面
![246289794-97f7f9c6-6f7d-4504-bc45-48660282249b](https://github.com/ArkMowers/arknights-mower/assets/33809511/a6dd6f47-39df-41c4-b384-38c9efeefd6a)

## 赛博监工
![image](https://github.com/ArkMowers/arknights-mower/assets/33809511/61ad7eb4-bb93-4259-af4a-a28ea9b1f66c)

## 安装

在 [Releases](https://github.com/ArkMowers/arknights-mower/releases) 下载 Windows 可执行文件版本。
在 [action](https://github.com/ArkMowers/arknights-mower/actions/workflows/pyinstaller-win-shawn.yml) 产物下载最新测试版本
或进入下方 qq 群文件领取，目前软件迭代速度较快，进入群内可获取一手版本

## 使用教程

- 下载安装后，打开软件
- 设置 adb 地址（如 127.0.0.1:5555）
- 配置排班表[[配置方法](https://www.bilibili.com/video/BV1KT411s7Ar)]或前往 qq 群寻找现成的排班表导入
- 点击开始执行
- 详细配置内容请参考[[功能文档](https://arkmowers.github.io/arknights-mower/)]

欢迎大家提交 Pull requests 增加更多的功能！

## 遇到报错？想要更多功能？

如果你在使用过程中遇到问题，欢迎通过提交 Issue 的方式报错或者提问。报告 Issue 时建议附上调试信息以便定位问题。

也欢迎加入交流群讨论：

- [Telegram Group](https://t.me/ark_mover)
- [QQ Group](https://jq.qq.com/?_wv=1027&k=4gWboTVI): 239200680

## Star History

[![Star History Chart](https://api.star-history.com/svg?repos=ArkMowers/arknights-mower&type=Date)](https://star-history.com/#ArkMowers/arknights-mower&Date)


# dbt-fabric

[dbt](https://www.getdbt.com) adapter for Microsoft Fabric Synapse Data Warehouse.

The adapter supports dbt-core 1.4 or newer and follows the same versioning scheme.
E.g. version 1.1.x of the adapter will be compatible with dbt-core 1.1.x.

## Documentation

We've bundled all documentation on the dbt docs site
* [Profile setup & authentication](https://docs.getdbt.com/docs/core/connect-data-platform/fabric-setup)
* [Adapter documentation, usage and important notes](https://docs.getdbt.com/reference/resource-configs/fabric-configs)

## Installation

This adapter requires the Microsoft ODBC driver to be installed:
[Windows](https://docs.microsoft.com/nl-be/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver16#download-for-windows) |
[macOS](https://docs.microsoft.com/nl-be/sql/connect/odbc/linux-mac/install-microsoft-odbc-driver-sql-server-macos?view=sql-server-ver16) |
[Linux](https://docs.microsoft.com/nl-be/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver16)

Debian/Ubuntu

Make sure to install the ODBC headers as well as the driver linked above:

```shell
sudo apt-get install -y unixodbc-dev
```

Latest version: ![PyPI](https://img.shields.io/pypi/v/dbt-fabric?label=latest&logo=pypi)

```shell
pip install -U dbt-fabric
```

## Changelog

See [the changelog](CHANGELOG.md)

## Contributing

[![Unit tests](https://github.com/microsoft/dbt-fabric/actions/workflows/unit-tests.yml/badge.svg)](https://github.com/microsoft/dbt-fabric/actions/workflows/unit-tests.yml)
[![Integration tests on Azure](https://github.com/microsoft/dbt-fabric/actions/workflows/integration-tests-azure.yml/badge.svg)](https://github.com/microsoft/dbt-fabric/actions/workflows/integration-tests-azure.yml)
[![Publish Docker images for CI/CD](https://github.com/microsoft/dbt-fabric/actions/workflows/publish-docker.yml/badge.svg)](https://github.com/microsoft/dbt-fabric/actions/workflows/publish-docker.yml)

This adapter is Microsoft-maintained.
You are welcome to contribute by creating issues, opening or reviewing pull requests.
If you're unsure how to get started, check out our [contributing guide](CONTRIBUTING.md).

## License

[![PyPI - License](https://img.shields.io/pypi/l/dbt-fabric)](https://github.com/microsoft/dbt-fabric/blob/main/LICENSE)

## Code of Conduct

This project and everyone involved is expected to follow the [Microsoft Code of Conduct](https://opensource.microsoft.com/codeofconduct/).


# Qiskit Nature

[![License](https://img.shields.io/github/license/Qiskit/qiskit-nature.svg?style=popout-square)](https://opensource.org/licenses/Apache-2.0)<!--- long-description-skip-begin -->[![Build Status](https://github.com/qiskit-community/qiskit-nature/workflows/Nature%20Unit%20Tests/badge.svg?branch=main)](https://github.com/qiskit-community/qiskit-nature/actions?query=workflow%3A"Nature%20Unit%20Tests"+branch%3Amain+event%3Apush)[![](https://img.shields.io/github/release/Qiskit/qiskit-nature.svg?style=popout-square)](https://github.com/qiskit-community/qiskit-nature/releases)[![](https://img.shields.io/pypi/dm/qiskit-nature.svg?style=popout-square)](https://pypi.org/project/qiskit-nature/)[![Coverage Status](https://coveralls.io/repos/github/Qiskit/qiskit-nature/badge.svg?branch=main)](https://coveralls.io/github/Qiskit/qiskit-nature?branch=main)<!--- long-description-skip-end -->

**Qiskit Nature** is an open-source framework which supports solving quantum mechanical natural
science problems using quantum computing algorithms. This includes finding ground and excited
states of electronic and vibrational structure problems, measuring the dipole moments of molecular
systems, solving the Ising and Fermi-Hubbard models on lattices, and much more.

![Qiskit Nature Design](./docs/images/overview.png)

The code comprises various modules revolving around:

- data loading from chemistry drivers or file formats
- second-quantized operator construction and manipulation
- translating from the second-quantized to the qubit space
- a quantum circuit library of natural science targeted ansatze
- natural science specific algorithms and utilities to make the use of
  algorithms from [Qiskit Algorithms](https://qiskit-community.github.io/qiskit-algorithms/) easier
- and much more

## Installation

We encourage installing Qiskit Nature via the pip tool (a python package manager).

```bash
pip install qiskit-nature
```

**pip** will handle all dependencies automatically and you will always install the latest
(and well-tested) version.

If you want to work on the very latest work-in-progress versions, either to try features ahead of
their official release or if you want to contribute to Qiskit Nature, then you can install from source.
To do this follow the instructions in the
 [documentation](https://qiskit-community.github.io/qiskit-nature/getting_started.html#installation).

### Optional Installs

To run chemistry experiments using Qiskit Nature, it is recommended that you install
a classical computation chemistry software program/library interfaced by Qiskit.
Several, as listed below, are supported, and while logic to interface these programs is supplied by
Qiskit Nature via the above pip installation, the dependent programs/libraries themselves need
to be installed separately.

- [Gaussian 16™](https://qiskit-community.github.io/qiskit-nature/apidocs/qiskit_nature.second_q.drivers.gaussiand.html), a commercial chemistry program
- [PSI4](https://qiskit-community.github.io/qiskit-nature/apidocs/qiskit_nature.second_q.drivers.psi4d.html), a chemistry program that exposes a Python interface allowing for accessing internal objects
- [PySCF](https://qiskit-community.github.io/qiskit-nature/apidocs/qiskit_nature.second_q.drivers.pyscfd.html), an open-source Python chemistry program

The above codes can be used in a very limited fashion through Qiskit Nature.
While this is useful for getting started and testing purposes, a better experience can be had in the reversed order of responsibility.
That is, in a setup where the classical code runs the Qiskit Nature components.
Such an integration currently exists for the following packages:

- PySCF via [qiskit-nature-pyscf](https://qiskit-community.github.io/qiskit-nature-pyscf/)

If you are interested in using Psi4, we are actively looking for help to get started on a similar integration in [qiskit-nature-psi4](https://github.com/qiskit-community/qiskit-nature-psi4).

Additionally, you may find the following optional dependencies useful:

- [sparse](https://github.com/pydata/sparse/), a library for sparse multi-dimensional arrays. When installed, Qiskit Nature can leverage this to reduce the memory requirements of your calculations.
- [opt_einsum](https://github.com/dgasmith/opt_einsum), a tensor contraction order optimizer for `np.einsum`.

## Creating Your First Chemistry Programming Experiment in Qiskit

Check our [getting started page](https://qiskit-community.github.io/qiskit-nature/getting_started.html)
for a first example on how to use Qiskit Nature.

### Further examples

Learning path notebooks may be found in the
[Nature Tutorials](https://qiskit-community.github.io/qiskit-nature/tutorials/index.html) section
of the documentation and are a great place to start.

----------------------------------------------------------------------------------------------------

## Contribution Guidelines

If you'd like to contribute to Qiskit, please take a look at our
[contribution guidelines](https://github.com/qiskit-community/qiskit-nature/blob/main/CONTRIBUTING.md).
This project adheres to Qiskit's [code of conduct](https://github.com/qiskit-community/qiskit-nature/blob/main/CODE_OF_CONDUCT.md).
By participating, you are expected to uphold this code.

We use [GitHub issues](https://github.com/qiskit-community/qiskit-nature/issues) for tracking requests and bugs. Please
[join the Qiskit Slack community](https://qisk.it/join-slack)
for discussion and simple questions.
For questions that are more suited for a forum, we use the **Qiskit** tag in [Stack Overflow](https://stackoverflow.com/questions/tagged/qiskit).

## Authors and Citation

Qiskit Nature was inspired, authored and brought about by the collective work of a team of researchers.
Qiskit Nature continues to grow with the help and work of
[many people](https://github.com/qiskit-community/qiskit-nature/graphs/contributors), who contribute
to the project at different levels.
If you use Qiskit Nature, please cite the following references:

- Qiskit, as per the provided [BibTeX file](https://github.com/Qiskit/qiskit/blob/main/CITATION.bib).
- Qiskit Nature, as per https://doi.org/10.5281/zenodo.7828767

## License

This project uses the [Apache License 2.0](https://github.com/qiskit-community/qiskit-nature/blob/main/LICENSE.txt).

However there is some code that is included under other licensing as follows:

* The [Gaussian 16 driver](https://github.com/qiskit-community/qiskit-nature/tree/main/qiskit_nature/second_q/drivers/gaussiand) in `qiskit-nature`
  contains [work](https://github.com/qiskit-community/qiskit-nature/tree/main/qiskit_nature/second_q/drivers/gaussiand/gauopen) licensed under the
  [Gaussian Open-Source Public License](https://github.com/qiskit-community/qiskit-nature/blob/main/qiskit_nature/second_q/drivers/gaussiand/gauopen/LICENSE.txt).


# Auto-analysis service for ReportPortal

[![Tests](https://github.com/reportportal/service-auto-analyzer/actions/workflows/tests.yml/badge.svg)](https://github.com/reportportal/service-auto-analyzer/actions/workflows/tests.yml)
[![codecov](https://codecov.io/github/reportportal/service-auto-analyzer/branch/master/graph/badge.svg?token=Y3llbuAYLr)](https://codecov.io/github/reportportal/service-auto-analyzer)
[![Join Slack chat!](https://img.shields.io/badge/slack-join-brightgreen.svg)](https://slack.epmrpp.reportportal.io/)
[![stackoverflow](https://img.shields.io/badge/reportportal-stackoverflow-orange.svg?style=flat)](http://stackoverflow.com/questions/tagged/reportportal)
[![Build with Love](https://img.shields.io/badge/build%20with-❤%EF%B8%8F%E2%80%8D-lightgrey.svg)](http://reportportal.io?style=flat)

## Environment variables for configuration

| **Property name**               | **Type** | **Default value**          | **Description**                                                                                |
|---------------------------------|----------|----------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ES_HOSTS                        | string   | http\://elasticsearch:9200 | Elasticsearch host (can be either like this "http://elasticsearch:9200", or with login and password delimited by : and separated from the host name by @)                                                                                |
| ES_USER                         | string   |                            | Elasticsearch host login, set up here the username for elasticsearch, if you choose setup username here, in the **ES_HOSTS** you should leave only url without login and password                                                                                |
| ES_PASSWORD                     | string   |                            | Elasticsearch host password, set up here the password for elasticsearch, if you choose setup the password here, in the **ES_HOSTS** you should leave only url without login and password                                                                                |
| LOGGING_LEVEL                   | string   | DEBUG                      | logging level for the whole module, can be DEBUG, INFO, ERROR, CRITICAL                                                                                |
| AMQP_URL                        | string   |                            | an url to the rabbitmq instance                                                                                |
| AMQP_EXCHANGE_NAME              | string   | analyzer                   | Exchange name for the module communication for this module                                                                                |
| ANALYZER_PRIORITY               | integer  | 1                          | priority for this analyzer                                                                                |
| ANALYZER_INDEX                  | boolean  | true                       | the parameter for rabbitmq exchange params, where the analyzer supports indexing                                                                                |
| ANALYZER_LOG_SEARCH             | boolean  | true                       | the parameter for rabbitmq exchange params, where the analyzer supports searching logs                                                                                |
| ANALYZER_SUGGEST                | boolean  | true                       | the parameter for rabbitmq exchange params, where the analyzer supports suggesting                                                                                |
| ANALYZER_CLUSTER                | boolean  | true                       | the parameter for rabbitmq exchange params, where the analyzer supports clustering                                                                                |
| ES_VERIFY_CERTS                 | boolean  | false                      | turn on SSL certificates verification                                                                                |
| ES_USE_SSL                      | boolean  | false                      | turn on SSL                                                                                |
| ES_SSL_SHOW_WARN                | boolean  | false                      | show warning on SSL certificates verification                                                                                |
| ES_CA_CERT                      | string   |                            | provide a path to CA certs on disk                                                                                |
| ES_CLIENT_CERT                  | string   |                            | PEM formatted SSL client certificate                                                                                |
| ES_CLIENT_KEY                   | string   |                            | EM formatted SSL client key                                                                                |
| ES_TURN_OFF_SSL_VERIFICATION    | boolean  | false                      | Turn off ssl verification via using RequestsHttpConnection class instead of Urllib3HttpConnection class.                                                                                |
| ANALYZER_BINSTORE_TYPE          | enum     | filesystem                 | Possible values: "minio", "filesystem". Strategy where to store information, connected with the analyzer                                                                                |
| MINIO_SHORT_HOST                | string   | minio:9000                 | you need to set short host and port to the minio service. This property is used in case `ANALYZER_BINARYSTORE_TYPE` is set to `minio`.                                                                                |
| MINIO_ACCESS_KEY                | string   | minio                      | you need to set a minio access key here                                                                                |
| MINIO_SECRET_KEY                | string   | minio123                   | you need to set a minio secret key here                                                                                |
| MINIO_USE_TLS                   | boolean  | false                      | Flag to indicate to use secure (TLS) connection to S3 service or not.                                                                                |
| ANALYZER_BINSTORE_BUCKETPREFIX  | string   | prj-                       | the prefix for buckets which are added to each project filepath.                                                                                |
| ANALYZER_BINSTORE_MINIO_REGION  | string   |                            | the region which you can specify for saving in AWS S3                                                                                |
| INSTANCE_TASK_TYPE              | string   |                            | if you want to run a standard analyzer instance, leave it as blank. If you want to run an instance for training, set "train" here.                                                                                |
| FILESYSTEM_DEFAULT_PATH         | string   | storage                    | the path where will be stored all the information connected with analyzer, if `ANALYZER_BINARYSTORE_TYPE` is set to `filesystem`. If you want to mount this folder to some folder on your machine, you can use this instruction in the docker compose:
volumes:
  - ./data/analyzer:/backend/storage                                                                                |
| ES_CHUNK_NUMBER                 | integer  | 1000                       | the number of objects which is sent to ES while bulk indexing. **NOTE**: AWS Elasticsearch has restrictions for sent data size either 10Mb or 100Mb, so when 10Mb is chosen, make sure you don't get the error "TransportError(413, '{"Message": "Request size exceeded 10485760 bytes"}')" while generating index or indexing the data. If you get this error, please, decrease ES_CHUNK_NUMBER until you stop getting this error.                                                                                |
| ES_CHUNK_NUMBER_UPDATE_CLUSTERS | integer  | 500                        | the number of objects which is sent to ES while bulk updating clusters. **NOTE**: AWS Elasticsearch has restrictions for sent data size either 10Mb or 100Mb, so when 10Mb is chosen, make sure you don't get the error "TransportError(413, '{"Message": "Request size exceeded 10485760 bytes"}')" while generating index or indexing the data. If you get this error, please, decrease ES_CHUNK_NUMBER_UPDATE_CLUSTERS until you stop getting this error.                                                                                |
| ES_PROJECT_INDEX_PREFIX         | string   |                            | the prefix which is added to the created for each project indices. Our index name is the project id, so if it is 34, then the index "34" will be created. If you set ES_PROJECT_INDEX_PREFIX="rp_", then "rp_34" index will be created. We create several other indices which are sharable between projects, and this prefix won't influence them: rp_aa_stats, rp_stats, rp_model_train_stats, rp_done_tasks, rp_suggestions_info_metrics. **NOTE**: if you change an environmental variable, you'll need to generate index, so that a nex index is created and filled appropriately. |
| AUTO_ANALYSIS_TIMEOUT           | integer  | 300                        | which sets timeout in seconds for auto-analysis operations to return results after this timeout, so if the request to the analyzer will be running out of time, the analyzer stops processing and returns results to the backend.                                                                                |
| ANALYZER_MAX_ITEMS_TO_PROCESS   | integer  | 4000                       | How many test items can be processed for one request, so if analyzer processes more than 4000 items, the analyzer stops processing and returns results to the backend.                                                                                |
| ANALYZER_HTTP_PORT              | integer  | 5001                       | the http port for checking status of the analyzer. It is used when you run the analyzer without Docker and uwsgi. If you use Docker, you will use the port 5001 and remap it to the port you want. If you use wsqgi for running the analyzer, you can remap the port with --http :5000 parameter in cmd or app.ini.                                                                                |
| ANALYZER_FILE_LOGGING_PATH      | string   | /tmp/config.log            | the file for logging what's happening with the analyzer                                                                                |

## Environmental variables for constants, used by algorithms

| **Property name**               | **Type** | **Default value** | **Description**                                                                                |
|---------------------------------|----------|-------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ES_MIN_SHOULD_MATCH             | string   | 80%               | the global default min should match value for auto-analysis, but it is used only when the project settings are not set up.                                                                                |
| ES_BOOST_AA                     | float    | -8.0              | the value to boost auto-analyzed items while querying for Auto-analysis                                                                                |
| ES_BOOST_LAUNCH                 | float    | 4.0               | the value to boost items with the same launch while querying for Auto-analysis                                                                                |
| ES_BOOST_TEST_CASE_HASH         | float    | 8.0               | the value to boost items with the same test case hash while querying for Auto-analysis                                                                                |
| ES_MAX_QUERY_TERMS              | integer  | 50                | the value to use in more like this query while querying for Auto-analysis                                                                                |
| ES_MIN_WORD_LENGTH              | integer  | 2                 | the value to use in more like this query while querying for Auto-analysis                                                                                |
| PATTERN_LABEL_MIN_PERCENT       | float    | 0.9               | the value of minimum percent of the same issue type for pattern to be suggested as a pattern with a label                                                                                |
| PATTERN_LABEL_MIN_COUNT         | integer  | 5                 | the value of minimum count of pattern occurrence to be suggested as a pattern with a label                                                                                |
| PATTERN_MIN_COUNT               | integer  | 10                | the value of minimum count of pattern occurrence to be suggested as a pattern without a label                                                                                |
| MAX_LOGS_FOR_DEFECT_TYPE_MODEL  | integer  | 10000             | the value of maximum count of logs per defect type to add into defect type model training. Default value is chosen in cosideration of having space for analyzer_train docker image setuo of 1GB, if you can give more GB you can linearly allow more logs to be considered.                                                           |
| PROB_CUSTOM_MODEL_SUGGESTIONS   | float    | 0.7               | the probability of custom retrained model to be used for running when suggestions are requested. The maximum value is 0.8, because we want at least 20% of requests to process with a global model not to overfit for project too much. The bigger the value of this env varibale the more often custom retrained model will be used. |
| PROB_CUSTOM_MODEL_AUTO_ANALYSIS | float    | 0.5               | the probability of custom retrained model to be used for running when auto-analysis is performed. The maximum value is 1.0. The bigger the value of this env varibale the more often custom retrained model will be used.                                                                                |
| MAX_SUGGESTIONS_NUMBER          | integer  | 3                 | the maximum number of suggestions shown in the ML suggestions area in the defect type editor.                                                                                |

## Instructions for analyzer setup without Docker

Install python with the version 3.7.4. (it is the version on which the service was developed, but it should work on the versions starting from 3.6).

Perform next steps inside source directory of the analyzer.

### For Linux:

#### Analyzer

1. Create a virtual environment with any name (in the example **/venv**)
```bash
  python -m venv /analyzer
```
2. Install python libraries
```bash
  /analyzer/bin/pip install --no-cache-dir -r requirements.txt
```
3. Activate the virtual environment
```bash
  /analyzer/bin/activate
```
4. Install stopwords package from the nltk library
```bash
  /analyzer/bin/python3 -m nltk.downloader -d /usr/share/nltk_data stopwords
```
5. Start the uwsgi server, you can change properties, such as the workers quantity for running the analyzer in the several processes
```bash
  /analyzer/bin/uwsgi --ini res/analyzer.ini
```

#### Analyzer Train

1. Create a virtual environment with any name (in the example **/venv**)
```bash
  python -m venv /analyzer-train
```
2. Install python libraries
```bash
  /analyzer-train/bin/pip install --no-cache-dir -r requirements.txt
```
3. Activate the virtual environment
```bash
  source /analyzer-train/bin/activate
```
4. Install stopwords package from the nltk library
```bash
  /analyzer-train/bin/python3 -m nltk.downloader -d /usr/share/nltk_data stopwords
```
5. Start the uwsgi server, you can change properties, such as the workers quantity for running the analyzer train in the several processes
```bash
  /analyzer-train/bin/uwsgi --ini res/analyzer-train.ini
```

### For Windows:
1. Create a virtual environment with any name (in the example **env**)
```
python -m venv env
```
2. Activate the virtual environment
```
call env\Scripts\activate.bat
```
3. Install python libraries
```
python -m pip install -r requirements_windows.txt
```
4. Install stopwords package from the nltk library
```
python -m nltk.downloader stopwords
```
5. Start the program.
```
python app/app.py
```


# Arista Validated Designs

![Arista AVD](https://img.shields.io/badge/Arista-AVD%20Automation-blue) ![collection version](https://img.shields.io/github/v/release/aristanetworks/ansible-avd) ![License](https://img.shields.io/github/license/aristanetworks/ansible-avd)

Arista Validated Designs (AVD) is an extensible data model that defines Arista's Unified Cloud Network architecture as "code".

AVD Documentation:

- [Stable version](https://avd.arista.com/stable/)
- [Development version](https://www.avd.sh/en/devel/)

## Features

- **Flexibility with Open Data Models:** Extensible fabric-wide network models, simplifying configuration, delivering consistency, and reducing errors
- **Simplification through Multi-Domain Automation:** A framework that can automate the data center, campus or wide area network, enabled by a consistent EOS software image and management platform
- **Comprehensive Workflows:** Automating the full life cycle of network provisioning from config generation to pre and post-deployment validation, and self-documentation of the network

## Reference designs

- [L3LS VXLAN-EVPN, L2LS, and MPLS](https://avd.arista.com/stable/roles/eos_designs/index.html)

## AVD Ansible Collection

[Arista Networks](https://www.arista.com/) supports Ansible for managing devices running Arista's **Extensible Operating System (EOS)** natively through it's **EOS API (eAPI)** or [**CloudVision Portal (CVP)**](https://www.arista.com/en/products/eos/eos-cloudvision). The collection includes a set of Ansible roles and modules to help kick-start your automation with Arista. The various roles and templates provided are designed to be customized and extended to your needs.

### Examples

- [Getting started](https://avd.arista.com/stable/docs/getting-started/intro-to-ansible-and-avd.html)
- [Arista NetDevOps Examples](https://github.com/aristanetworks/netdevops-examples)

### Additional resources

- Ansible [EOS modules](https://docs.ansible.com/ansible/latest/collections/arista/eos/index.html) on Ansible documentation
- Ansible [CloudVision modules](https://cvp.avd.sh/en/stable/)
- [CloudVision Portal](https://www.arista.com/en/products/eos/eos-cloudvision)
- [Arista Design and Deployment Guides](https://www.arista.com/en/solutions/design-guides)

## Ask a question

Support for this `arista.avd` collection is provided by the community directly in this repository. If you have any questions, please leverage the GitHub [discussions board](https://github.com/aristanetworks/ansible-avd/discussions).

## Contributing

Contributing pull requests are gladly welcomed for this repository. If you are planning a big change, please start a discussion first to make sure we'll be able to merge it. Please see [contribution guide](./ansible_collections/arista/avd/docs/contribution/overview.md) for additional details.

You can also open an [issue](https://github.com/aristanetworks/ansible-avd/issues) to report any problems or submit requests for enhancements.

## License

The project is published under [Apache 2.0 License](./LICENSE)


# Joanie – Power up Richie catalog 👛

Joanie is a headless ERP for education to manage course enrollment/subscription,
payment and certificates delivery.

Joanie is built on top of [Django Rest
Framework](https://www.django-rest-framework.org/).

## Getting started

### Prerequisite

Make sure you have a recent version of Docker and [Docker
Compose](https://docs.docker.com/compose/install) installed on your laptop:

```bash
$ docker -v
  Docker version 20.10.2, build 2291f61

$ docker compose version
  Docker Compose version v2.25.0
```

> ⚠ You may need to run the following commands with `sudo` but this can be
> avoided by assigning your user to the `docker` group.

### Project bootstrap

The easiest way to start working on the project is to use GNU Make:

```bash
$ make bootstrap
```

This command builds the `app` container, installs dependencies, performs
database migrations and compile translations. It's a good idea to use this
command each time you are pulling code from the project repository to avoid
dependency-releated or migration-releated issues.

Your Docker services should now be up and running 🎉

Note that if you need to run them afterwards, you can use the eponym Make rule:

```bash
$ make run
```

### Adding content

You can create a basic demo site by running:

    $ make demo

Now, you should be able to access the API overview interface at
[http://localhost:8071/api/](http://localhost:8071/api/).

Finally, you can check all available Make rules using:

```bash
$ make help
```

If you're preparing for production, it is recommended to host media files in an
object storage.  We've cooked [Terraform](https://www.terraform.io/) scripts
and a [documentation](docs/media.md) to make it easy if, like us, you are
planning to use [Swift](https://docs.openstack.org/swift). Read more about it:
[docs/media.md](docs/media.md).

If you're planning to use AWS S3 or another object storage service, please let
us know by opening an [issue](https://github.com/openfun/joanie/issues) or even
better a [pull request](https://github.com/openfun/joanie/pulls) to add it to
the project.

### Django admin

You can access the Django admin site at
[http://localhost:8071/admin](http://localhost:8071/admin).

You first need to create a superuser account:

```bash
$ make superuser
```

## Guides

### Explanation

- [LMS Connection](https://github.com/openfun/joanie/blob/main/docs/explanation/lms-connection.md)
- [Payment backends](https://github.com/openfun/joanie/blob/main/docs/explanation/payment-backend.md)

### Reference

- [Models](https://github.com/openfun/joanie/blob/main/docs/reference/models.md)

## Contributing

This project is intended to be community-driven, so please, do not hesitate to
get in touch if you have any question related to our implementation or design
decisions.

We try to raise our code quality standards and expect contributors to follow
the recommandations from our
[handbook](https://openfun.gitbooks.io/handbook/content).

## License

This work is released under the MIT License (see [LICENSE](./LICENSE)).


# Antares Web

[![CI](https://github.com/AntaresSimulatorTeam/AntaREST/workflows/main/badge.svg)](https://github.com/AntaresSimulatorTeam/AntaREST/actions?query=workflow%3Amain)
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=AntaresSimulatorTeam_api-iso-antares&metric=coverage)](https://sonarcloud.io/dashboard?id=AntaresSimulatorTeam_api-iso-antares)
[![Licence](https://img.shields.io/github/license/AntaresSimulatorTeam/AntaREST)](https://www.apache.org/licenses/LICENSE-2.0)

![Screenshot](./docs/assets/media/img/readme_screenshot.png)

## Documentation

The full project documentation can be found in the [readthedocs website](https://antares-web.readthedocs.io/en/latest).

## Build the API

First clone the projet:

```shell script
git clone https://github.com/AntaresSimulatorTeam/AntaREST.git
cd AntaREST
```

Install back-end dependencies

```shell script
python -m pip install --upgrade pip
pip install pydantic --no-binary pydantic
pip install -r requirements.txt  # use requirements-dev.txt if building a single binary with pyinstaller
```

Install the front-end dependencies:

```shell script
cd webapp
npm install
cd ..
```

Then build the front-end application:
 - for use with pyinstaller:
```shell
NODE_OPTIONS="--max-old-space-size=8192" ./scripts/build-front.sh
```
 - for other uses (docker deployement, ...):
```shell
cd webapp
npm run build
cd ..
```

### Using pyinstaller

Linux system:

```shell script
git log -1 HEAD --format=%H > ./resources/commit_id
pyinstaller AntaresWebLinux.spec
```

Windows system:

```shell script
git log -1 HEAD --format=%H > .\resources\commit_id
pyinstaller AntaresWebWin.spec
```

You can test the build is ok using:

```shell script
dist/AntaresWeb/AntaresWebServer -v       # Linux based system
dist\AntaresWeb\AntaresWebServer.exe -v   # Windows system
```

### Using docker

To build the docker image, use the following command:

```shell script
docker build --tag antarest .
```

## Run the API

### Using binary built with pyinstaller

```shell script
dist/AntaresWeb/AntaresWebServer -c </path/to/config.yaml>  # Linux based system
dist\AntaresWeb\AntaresWebServer.exe -c </path/to/config.yaml>    # Windows system
```

### Using docker image

You may run the back-end with default configuration using the following command:
```shell script
docker run \
  -p 80:5000 \
  -e GUNICORN_WORKERS=1 \
  antarest
```

However, for a complete deployment including the front-end application, and the use of an external database
and an external REDIS instance, please refer to the deployement instructions on [readthedocs website](https://antares-web.readthedocs.io/en/latest)

### Using python directly

#### Using uvicorn

```shell script
pip install -e .

python ./antarest/main.py -c resources/application.yaml
```

#### Using gunicorn wsgi server with uvicorn workers

```shell script
pip install -e .

export ANTAREST_CONF=resources/application.yaml
export GUNICORN_WORKERS=4
gunicorn --config conf/gunicorn.py --worker-class=uvicorn.workers.UvicornWorker antarest.wsgi:app
```

## Examples

Once you started the server, you have access to the API.
The address (the port mostly) depends of the way you started the server. If you start the server
* via python use: **http://0.0.0.0:8080**
* via gunicorn use: **http://0.0.0.0:5000**
* via docker use: **http://0.0.0.0:80** (if you use the parameter *-p 80:5000*)

To test the server, you can list the available studies in your workspace using:

```shell script
curl http://localhost:8080/v1/studies
```

Or data of a specific study using:

```shell script
curl http://localhost:8080/v1/studies/{study_uuid}
```

The current API handle hundreds of html end point (get and post) to manipulate your studies.
The best way to discover the API is using it's swagger documentation (see below).

## Swagger

The ANTARES API doc is available within the application (open your browser to `http://localhost:8080`)
You can also fetch the raw open api spec :

```shell script
curl http://localhost:8080/openapi.json > swagger.json
```


# [Infinigen: Infinite Photorealistic Worlds Using Procedural Generation](https://infinigen.org)

[**Getting Started**](#getting-started)
| [**Website**](https://infinigen.org/)
| [**Intro Video**](https://www.youtube.com/watch?v=6tgspeI-GHY)
| [**Papers**](#papers)
| [**Documentation**](#documentation)
| [**Contributing**](#contributing)

## Getting Started

First, follow our [Installation Instructions](docs/Installation.md).

### Hello Room: Getting Started with Infinigen Indoors

See instructions & example commands for Infinigen-Indoors in [HelloRoom.md](docs/HelloRoom.md)

### Hello World: Getting Started with Infinigen Nature

See instructions & example commands for Infinigen-Nature in [HelloWorld.md](docs/HelloWorld.md)

## Papers

If you use Infinigen in your work, please cite our academic papers:

Infinite Photorealistic Worlds using Procedural Generation

Alexander Raistrick*,
Lahav Lipson*,
Zeyu Ma* (*equal contribution, alphabetical order)

Lingjie Mei,
Mingzhe Wang,
Yiming Zuo,
Karhan Kayan,
Hongyu Wen,
Beining Han,

Yihan Wang,
Alejandro Newell,
Hei Law,
Ankit Goyal,
Kaiyu Yang,
Jia Deng

Conference on Computer Vision and Pattern Recognition (CVPR) 2023

```
@inproceedings{infinigen2023infinite,
  title={Infinite Photorealistic Worlds Using Procedural Generation},
  author={Raistrick, Alexander and Lipson, Lahav and Ma, Zeyu and Mei, Lingjie and Wang, Mingzhe and Zuo, Yiming and Kayan, Karhan and Wen, Hongyu and Han, Beining and Wang, Yihan and Newell, Alejandro and Law, Hei and Goyal, Ankit and Yang, Kaiyu and Deng, Jia},
  booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
  pages={12630--12641},
  year={2023}
}
```

Infinigen Indoors: Photorealistic Indoor Scenes using Procedural Generation

Alexander Raistrick*,
Lingjie Mei*,
Karhan Kayan*, (*equal contribution, random order)

David Yan,
Yiming Zuo,
Beining Han,
Hongyu Wen,
Meenal Parakh,

Stamatis Alexandropoulos,
Lahav Lipson,
Zeyu Ma,
Jia Deng

Conference on Computer Vision and Pattern Recognition (CVPR) 2024

```
@inproceedings{infinigen2024indoors,
    author    = {Raistrick, Alexander and Mei, Lingjie and Kayan, Karhan and Yan, David and Zuo, Yiming and Han, Beining and Wen, Hongyu and Parakh, Meenal and Alexandropoulos, Stamatis and Lipson, Lahav and Ma, Zeyu and Deng, Jia},
    title     = {Infinigen Indoors: Photorealistic Indoor Scenes using Procedural Generation},
    booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
    month     = {June},
    year      = {2024},
    pages     = {21783-21794}
}
```

## Documentation

- [Installation Guide](docs/Installation.md)
- ["Hello World": Generate your first Infinigen-Nature scene](docs/HelloWorld.md)
- ["Hello Room": Generate your first Infinigen-Indoors scene](docs/HelloRoom.md)
- [Configuring Infinigen](docs/ConfiguringInfinigen.md)
- [Downloading pre-generated data](docs/PreGeneratedData.md)
- [Generating individual assets](docs/GeneratingIndividualAssets.md)
- [Exporting to external fileformats (OBJ, OpenUSD, etc)](docs/ExportingToExternalFileFormats.md)
- [Extended ground-truth](docs/GroundTruthAnnotations.md)
- [Implementing new materials & assets](docs/ImplementingAssets.md)
- [Generating fluid simulations](docs/GeneratingFluidSimulations.md)

Please see our [project roadmap](https://infinigen.org/roadmap) and follow us at [https://twitter.com/PrincetonVL](https://twitter.com/PrincetonVL) for updates.

## Contributing

We welcome contributions! You can contribute in many ways:
- **Contribute code to this repository** - We welcome code contributions. More guidelines coming soon.
- **Contribute procedural generators** - `infinigen/nodes/node_transpiler/dev_script.py` provides tools to convert artist-friendly [Blender Nodes](https://docs.blender.org/manual/en/2.79/render/blender_render/materials/nodes/introduction.html) into python code. Tutorials and guidelines coming soon.
- **Contribute pre-generated data** - Anyone can contribute their computing power to create data and share it with the community. Please stay tuned for a repository of pre-generated data.

### Getting Help

Please post this repository's Github Issues page for help. Please run your command with `--debug`, and let us know:
- What is your computing setup, including OS version, CPU, RAM, GPU(s) and any drivers?
- What version of the code are you using (link a commit hash), and what if any modifications have you made (new configs, code edits)
- What exact command did you run?
- What were the output logs of the command you ran?
    - If using `manage_jobs`, look in `outputs/MYJOB/MYSEED/logs/` to find the right one.
    - What was the exact python error and stacktrace, if applicable?

### Acknowledgements

Infinigen wouldn't be possible without the fantastic work of the [Blender Foundation](https://www.blender.org/) and it's open-source contributors. Infinigen uses many open source projects, with special thanks to [Land-Lab](https://github.com/landlab/landlab), [BlenderProc](https://github.com/DLR-RM/BlenderProc) [Blender-FLIP-Fluids](https://github.com/rlguy/Blender-FLIP-Fluids) and [Blender-Differential-Growth](https://github.com/inca/blender-differential-growth).

We thank [Thomas Kole](https://blenderartists.org/u/ThomasKole) for providing procedural clouds and [Pedro P. Lopes](https://blendswap.com/blend/30728) for the autoexposure nodegraph.

We learned tremendously from online tutorials of
[Andrew Price](https://www.youtube.com/channel/UCOKHwx1VCdgnxwbjyb9Iu1g),
[Artisans of Vaul](https://www.youtube.com/@ArtisansofVaul),
[Bad Normals](https://www.youtube.com/@BadNormals),
[Blender Tutorial Channel](https://www.youtube.com/@BlenderTutorialChannel),
[blenderbitesize](https://www.youtube.com/@blenderbitesize),
[Blendini](http://www.youtube.com/watch?v=sHr8LjfX09c),
[Bradley Animation](https://www.youtube.com/@bradleyanimation120),
[CGCookie](https://www.youtube.com/watch?v=lPAYX8z9i8M),
[CGRogue](https://www.youtube.com/@PixelicaCG),
[Creative Shrimp](https://www.youtube.com/@CreativeShrimp),
[CrowdRender](https://www.youtube.com/@Crowdrender),
[Dr. Blender](https://www.youtube.com/@DrBlender),
[HEY Pictures](https://www.youtube.com/channel/UCo5rv1z-PPrCh-C7OvO2VAA),
[Ian Hubert](https://www.youtube.com/@IanHubert2),
[Kev Binge](https://www.youtube.com/@KevBinge),
[Lance Phan](https://www.youtube.com/@LancePhan),
[MaxEdge](https://www.youtube.com/@MaxEdge420),
[Mr. Cheebs](https://www.youtube.com/@MrCheebs),
[PixelicaCG](https://www.youtube.com/@PixelicaCG),
[Polyfjord](https://www.youtube.com/@Polyfjord),
[Robbie Tilton](https://www.youtube.com/@RobbieTilton),
[Ryan King Art](https://www.youtube.com/@RyanKingArt),
[Sam Bowman](https://www.youtube.com/@snow_mamba) and
[yogigraphics](https://www.youtube.com/@yojigraphics).
These tutorials provided procedural generators for our early experimentation and served as inspiration for our own implementations in the official release of Infinigen. They are acknowledged in file header comments where applicable.

Infinigen has evolved significantly since the version described in our CVPR paper. It now features some procedural code obtained from the internet under CC-0 licenses, which are marked with code comments where applicable - no such code was present in the system for the CVPR version.


![](docs/resource/img/logo_zh.png)
---
[![license](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://github.com/TencentBlueKing/blueking-dbm/blob/master/LICENSE)
[![Release](https://img.shields.io/badge/release-1.0.0-brightgreen.svg)](https://github.com/TencentBlueKing/blueking-dbm/releases)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/TencentBlueKing/blueking-dbm/pulls)

[English](readme_en.md) | 简体中文

DBM，数据库管理，集成了MySQL、Redis、ES、Kafka、HDFS、InfluxDB、Pulsar等多种数据库组件的全生命周期管理，提供了海量集群的批量管理能力，以及相应DB组件的集群管理工具箱，并配套DB个性化配置、高可用切换、域名管理等DB个性化服务，同时全方位的监控告警可观测能力，让数据库管理员、运维、开发等用户可以轻松完成数据库管理工作，更高效、更安全、更全面的管理数据库。

## Overview
- 设计理念
- 架构设计
- 代码目录

## Features
- 全面的DB组件服务：DBM提供MySQL、Redis、ES、Kafka、HDFS、InfluxDB、Pulsar等多个DB组件管理服务，管理员可按需使用特定DB组件提供全生命周期管理服务。
- 完整的DB工具箱：管理员通过DBM管理每个DB组件，每个DB组件均提供完整的功能服务如集群部署、集群管理、集群扩缩容、集群变更、集群监控等。
- 完善的DB公共管理：DBM提供DB个性化配置管理、高可用切换管理、域名解析管理、DB监控管理等DB公共管理服务，为每个DB组件和用户提供完善的DB基础服务。
- 可交互的执行服务：清晰的任务流程，用户可通过DBM提交所需的DB服务并由管理员审批执行。
- 安全的权限管理：管理员通过DBM可配置每个接入业务的管理员角色，同时提供平台级管理角色配置，权限控制安全可靠。

## Getting started
- [开发环境后台部署](docs/install/dev_deploy.md)

## Version plan
- [版本日志](docs/release.md)

## Support
- [源码](https://github.com/TencentBlueKing/blueking-dbm/tree/master)
- [wiki](https://github.com/TencentBlueKing/blueking-dbm/wiki)
- [蓝鲸论坛](https://bk.tencent.com/s-mart/community)
- [蓝鲸 DevOps 在线视频教程](https://bk.tencent.com/s-mart/video/)
- [蓝鲸社区版交流1群](https://jq.qq.com/?_wv=1027&k=5zk8F7G)

## BlueKing Community
- [BK-CMDB](https://github.com/Tencent/bk-cmdb)：蓝鲸配置平台（蓝鲸 CMDB）是一个面向资产及应用的企业级配置管理平台。
- [BK-CI](https://github.com/Tencent/bk-ci)：蓝鲸持续集成平台是一个开源的持续集成和持续交付系统，可以轻松将你的研发流程呈现到你面前。
- [BK-BCS](https://github.com/Tencent/bk-bcs)：蓝鲸容器管理平台是以容器技术为基础，为微服务业务提供编排管理的基础服务平台。
- [BK-PaaS](https://github.com/Tencent/bk-paas)：蓝鲸 PaaS 平台是一个开放式的开发平台，让开发者可以方便快捷地创建、开发、部署和管理 SaaS 应用。
- [BK-SOPS](https://github.com/Tencent/bk-sops)：标准运维（SOPS）是通过可视化的图形界面进行任务流程编排和执行的系统，是蓝鲸体系中一款轻量级的调度编排类 SaaS 产品。
- [BK-JOB](https://github.com/Tencent/bk-job)：蓝鲸作业平台(Job)是一套运维脚本管理系统，具备海量任务并发处理能力。

## Contributing
如果你有好的意见或建议，欢迎给我们提 Issues 或 Pull Requests，为蓝鲸开源社区贡献力量。关于 蓝鲸数据库管理平台 分支管理、Issue 以及 PR 规范，
请阅读 [Contributing Guide](.github/CONTRIBUTING.md)。

[腾讯开源激励计划](https://opensource.tencent.com/contribution) 鼓励开发者的参与和贡献，期待你的加入。

## License
项目基于 MIT 协议， 详细请参考 [LICENSE](https://github.com/TencentBlueKing/blueking-dbm/blob/master/LICENSE) 。
我们承诺未来不会更改适用于交付给任何人的当前项目版本的开源许可证（MIT 协议）。


[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=mrmap-community_backend&metric=coverage)](https://sonarcloud.io/dashboard?id=mrmap-community_backend)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=mrmap-community_backend&metric=alert_status)](https://sonarcloud.io/dashboard?id=mrmap-community_backend)
[![build docs](https://readthedocs.org/projects/mrmap/badge/?version=master)](https://mrmap.rtfd.io/en/master/)

<img src="https://github.com/mrmap-community/mrmap/blob/890d63933de3adf45dfb5cfafc1f4d538d2df624/docs/source/images/mr_map.png" width="200">

Mr. Map is a generic registry for geospatial data, metadata, services and their describing documents (e.g. web map services [WMS](https://www.opengeospatial.org/standards/wms), web feature services [WFS](https://www.opengeospatial.org/standards/wfs) and all the other [OGC](http://www.opengeospatial.org/) stuff. A similar project maybe [Hypermap-Registry](http://cga-harvard.github.io/Hypermap-Registry/) - but it lacks off many things which are needed in practice. The information model was inspired by the old well known [mapbender2](https://github.com/mrmap-community/Mapbender2.8) project and somewhen will be replaced by mrmap.

Since most GIS solutions out there are specified on a specific use case or aged without proper support, the need for an free and open source, generic geospatial registry system is high.

MrMap runs as a web application atop the [Django](https://www.djangoproject.com/)
Python framework with a [PostgreSQL](https://www.postgresql.org/) database. For a
complete list of requirements, see `requirements.txt`. The code is available [on GitHub](https://github.com/mrmap-community/mrmap).

### Documentation

The complete documentation for MrMap can be found at [github page](https://mrmap-community.github.io/mrmap/master).

### Discussion

* [GitHub Discussions](https://github.com/mrmap-community/mrmap/discussions) - Discussion forum hosted by GitHub; ideal for Q&A and other structured discussions

## Installation

Please see [the documentation](https://mrmap-community.github.io/mrmap/) for
instructions on installing MrMap.

## Providing Feedback

The best platform for general feedback, assistance, and other discussion is our
[GitHub discussions](https://github.com/mrmap-community/mrmap/discussions).
To report a bug or request a specific feature, please open a GitHub issue using
the [appropriate template](https://github.com/mrmap-community/mrmap/issues/new/choose).

If you are interested in contributing to the development of MrMap, please read
our [contributing guide](CONTRIBUTING.md) prior to beginning any work.


[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
![](https://github.com/FAIRmat-NFDI/pynxtools/actions/workflows/pytest.yml/badge.svg)
![](https://github.com/FAIRmat-NFDI/pynxtools/actions/workflows/pylint.yml/badge.svg)
![](https://github.com/FAIRmat-NFDI/pynxtools/actions/workflows/publish.yml/badge.svg)
![](https://img.shields.io/pypi/pyversions/pynxtools)
![](https://img.shields.io/pypi/l/pynxtools)
![](https://img.shields.io/pypi/v/pynxtools)
![](https://coveralls.io/repos/github/FAIRmat-NFDI/pynxtools/badge.svg?branch=master)

`pynxtools` is a tool designed for making your experimental data FAIR.
It allows to develop ontologies and to create ontological instances based on the [NeXus format](https://www.nexusformat.org/).

# Installation

It is recommended to use python 3.10 with a dedicated virtual environment for this package.
Learn how to manage [python versions](https://github.com/pyenv/pyenv) and
[virtual environments](https://realpython.com/python-virtual-environments-a-primer/).

Install the latest stable version of this package from PyPI with

```shell
pip install pynxtools
```

You can also install the latest _development_ version with

```shell
pip install git+https://github.com/FAIRmat-NFDI/pynxtools.git
```

# Scope

`pynxtools` (previously called `nexusutils`) is intended as a parser for combining various instrument output formats and electronic lab notebook (ELN) formats to an hdf5 file according to NeXus application definitions.

Additionally, the software is used in the research data management system NOMAD for
making experimental data searchable and publishable.
NOMAD is developed by the FAIRMAT consortium, as a part of the German National Research Data Infrastructure
(NFDI).

The software tools are located inside [`pynxtools`](https://github.com/FAIRmat-NFDI/pynxtools/tree/master/src/pynxtools) and they are
shipped with unit tests located in [`tests`](https://github.com/FAIRmat-NFDI/pynxtools/tree/master/tests).
Some examples with real datasets are provided in [`examples`](https://github.com/FAIRmat-NFDI/pynxtools/tree/master/examples).
It guides you through the process of converting instrument raw
data into the NeXus standard and visualising the files content.

# Command line tools

- [**dataconverter**](https://github.com/FAIRmat-NFDI/pynxtools/blob/master/src/pynxtools/dataconverter/README.md): Creates compliant instances of NeXus/HDF5 files to [NeXus schemas](https://nexusformat.org).
- [**read_nexus**](https://github.com/FAIRmat-NFDI/pynxtools/blob/master/src/pynxtools/nexus/README.md): Outputs a debug log for a given NeXus file.
- [**generate_eln**](https://github.com/FAIRmat-NFDI/pynxtools/blob/master/src/pynxtools/eln_mapper/README.md): Outputs ELN files that can be used to add metadata to the dataconverter routine.

# Documentation
Documentation for the different tools can be found [here](https://fairmat-nfdi.github.io/pynxtools/).

# Contributing

## Development install

Install the package with its dependencies:

```shell
git clone https://github.com/FAIRmat-NFDI/pynxtools.git \\
    --branch master \\
    --recursive pynxtools
cd pynxtools
git submodule sync --recursive
git submodule update --init --recursive --jobs=4
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip install -e ".[dev]"
```

There is also a [pre-commit hook](https://pre-commit.com/#intro) available
which formats the code and checks the linting before actually commiting.
It can be installed with
```shell
pre-commit install
```
from the root of this repository.

## Test this software

Especially relevant for developers, there exists a basic test framework written in
[pytest](https://docs.pytest.org/en/stable/) which can be used as follows:

```shell
python -m pytest -sv tests
```

## Run examples

A number of examples exist which document how the tools can be used. For a standalone
usage convenient jupyter notebooks are available for each tool. To use them jupyter
and related tools have to be installed in the development environment as follows:

```shell
python -m pip install jupyter
python -m pip install jupyterlab
python -m pip install jupyterlab_h5web
```

# Questions, suggestions?

To ask further questions, to make suggestions how we can improve these tools, to get advice
on how to build on this work, or to get your parser included into NOMAD, you can:

- Open an issue on the [pynxtools GitHub](https://github.com/FAIRmat-NFDI/pynxtools/issues)
- Use our forums at [matsci.org](https://matsci.org/c/nomad/32)
- Write to [support@nomad-lab.eu](mailto:support@nomad-lab.eu)
- Contact directly the lead developers of the individual parsers.

### Does this software require NOMAD or NOMAD OASIS ?

No. The data files produced here can be uploaded to Nomad. Therefore, this acts like the framework to design schemas and instances of data within the NeXus universe.

# Troubleshooting

Please check this [guide](TROUBLESHOOTING.md) for any issues you face with the tool. If you don't find a solution there, please make a new [Github Issue](https://github.com/FAIRmat-NFDI/pynxtools/issues/new?template=bug.yaml).


# COVID-19 Data Pipeline

COVID data pipeline / API supporting https://covidactnow.org/.

It ingests data scraped via https://github.com/covid-projections/can-scrapers, combines it, calculates metrics, and generates data files for the [Covid Act Now API](https://apidocs.covidactnow.org/) and [website](https://covidactnow.org/)

# Development

## Setup

Detailed setup instructions can be found [here](./SETUP.md).

## Local development.
Normally the pipeline is run via github actions on a beefy cloud VM and still takes 2+ hours. When developing locally it is often useful to run the pipeline on a subset of locations ond/or to skip pipeline steps.

To run the pipeline end-to-end but only generate data for Connecticut state / counties, you can run:

```
# Fetches latest scraped data from can-scrapers and combines all data sources
# into a combined dataset, runs all filters, etc.  Adding --no-refresh-datasets
# will make this much faster but skips fetching / combining latest datasets.
./run.py data update --states CT

# Runs the pyseir code to generate the infection rate, i.e. r(t) metric data for locations.
python ./pyseir/cli.py build-all --states=CT

# Runs the API generation
./run.py api generate-api-v2 --state CT output -o output/api

# API files are generated to output/api.
```

### Downloading Model Run Data

If you just want to run the API generation you can skip the first two steps above by downloading the pyseir model results from a previous snapshot. You can download the pyseir model output from a recent github action run with:
```
export GITHUB_TOKEN=<YOUR PERSONAL GITHUB TOKEN>
./run.py utils download-model-artifact
```
By default it downloads the last run, but you can choose a specific run with `--run-number`

## Running PySEIR
PySEIR provides a command line interface in the activated environment. You can access the model with `pyseir --help ` and `pyseir <subcommand> --help` providing more information.

Example:
`pyseir build-all --states="NY"` will run state and county models for New York.
States can also be specified by their state code: `--states="New York"` and `--states=NY` are equivalent.

`pyseir build-all --states=NY --fips=36061` will run the New York state model and the model for the specified
FIPS code (in this case New York City).

Check the `output/` folder for results.

### Model Output

There are a variety of output artifacts to paths described in pyseir/utils.py.
The main artifact is the ensemble_result which contains the output information
for each `suppression policy -> model compartment` as well as capacity
information.

## API Documentation

We host an API documentation site available in [api/docs](api/docs).  It is a static site built using [Docusaurus 2](https://v2.docusaurus.io/).

Additionally, we define the API output using [pydantic](https://pydantic-docs.helpmanual.io)
schemas and generate Open API specs (default output [api/docs/open_api_schema.json](api/docs/open_api_schema.json) and json-schema outputs (default output [api/schemas_v2/](api/schemas_v2).

When modifying the API schema, run `./run.py api update-schemas` to update the schemas.

### Simple setup

Build environment:
```bash
$ cd api/docs
$ yarn
```

Start server locally:
```bash
$ cd api/docs
$ yarn start
```

Deploy update to [apidocs.covidactnow.org](https://apidocs.covidactnow.org):
```bash
$ tools/deploy-docs.sh
```


pylxd
~~~~~

.. image:: http://img.shields.io/pypi/v/pylxd.svg
    :target: https://pypi.python.org/pypi/pylxd
.. image:: https://github.com/canonical/pylxd/workflows/CI%20tests/badge.svg
    :target: https://github.com/canonical/pylxd/actions?query=workflow%3A%22CI+tests%22
.. image:: https://codecov.io/github/canonical/pylxd/coverage.svg?branch=main
    :target: https://codecov.io/github/canonical/pylxd
.. image:: https://readthedocs.org/projects/pylxd/badge/?version=latest
    :target: https://pylxd.readthedocs.io/en/latest/?badge=latest

A Python library for interacting with the LXD REST API.

Installation
=============
``pip install pylxd``

Bug reports
===========

Bug reports can be filed on the `GitHub repository
<https://github.com/canonical/pylxd/issues/new>`_.

Support and discussions
=======================

We use the `LXD category on Ubuntu's Discourse
<https://discourse.ubuntu.com/c/lxd/126>`_.

If you prefer live discussions, some of us also hang out in
`#lxd
<https://web.libera.chat/#lxd>`_ on irc.libera.chat.

LXD Documentation: `https://documentation.ubuntu.com/lxd/en/latest/
<https://documentation.ubuntu.com/lxd/en/latest/>`_

PyLXD API Documentation: `https://pylxd.readthedocs.io/en/latest/
<https://pylxd.readthedocs.io/en/latest/>`_

Contributing to pyLXD
=====================

If you wish to contribute to pyLXD please read the `Contributing Guide
<https://pylxd.readthedocs.io/en/latest/contributing.html>`_, particularly
around unit tests, integration tests and signing commits.


# ElasticAI.creator

Design, train and compile neural networks optimized specifically for FPGAs.
Obtaining a final model is typically a three stage process.
* design and train it using the layers provided in the `elasticai.creator.nn` package.
* translate the model to a target representation, e.g. VHDL
* compile the intermediate representation with a third party tool, e.g. Xilinx Vivado (TM)

This version currently only supports parts of VHDL as target representations.

The project is part of the elastic ai ecosystem developed by the Embedded Systems Department of the University Duisburg-Essen. For more details checkout the slides at [researchgate](https://www.researchgate.net/publication/356372207_In-Situ_Artificial_Intelligence_for_Self-_Devices_The_Elastic_AI_Ecosystem_Tutorial).

## Table of contents

- [Users Guide](#users-guide)
  - [Install](#install)
  - [Minimal Example](#minimal-example)
  - [General Limitations](#general-limitations)
- [Structure of the Project](#structure-of-the-project)
- [Developers Guide](#developers-guide)
  - [Install Dev Dependencies](#install-dev-dependencies)
  - [Conventional Commit Rules](#conventional-commit-rules)
  - [Adding new translation targets](#adding-new-translation-targets)
  - [Syntax Checking](#syntax-checking)
  - [Tests](#tests)
    - [Test Style Guidelines](#test-style-guidelines)
      - [File IO](#file-io)
      - [Directory structure and file names](#directory-structure-and-file-names)
      - [Unit tests](#unit-tests)
      - [Integration tests](#integration-tests)
      - [System tests](#system-tests)
      - [Adding new functionalities and tests required](#adding-new-functionalities-and-tests-required)
      - [Updating tests](#updating-tests)

## Users Guide

### Install

You can install the ElasticAI.creator as a dependency using pip:
```bash
python3 -m pip install elasticai-creator
```

### Minimal Example

The following example shows how to use the ElasticAI.creator to define and translate a machine learning model to VHDL. It will save the generated VHDL code to a directory called `build_dir`.

```python
from elasticai.creator.nn import Sequential
from elasticai.creator.nn.fixed_point import Linear, HardSigmoid
from elasticai.creator.file_generation.on_disk_path import OnDiskPath

def main() -> None:
    # Define a model
    model = Sequential(
        Linear(in_features=10, out_features=2, bias=True, total_bits=16, frac_bits=8),
        HardSigmoid(total_bits=16, frac_bits=8),
    )

    # Train the model
    run_training(model)

    # Save the VHDL code of the trained model
    destination = OnDiskPath("build_dir")
    design = model.create_design("my_model")
    design.save_to(destination)

if __name__ == "__main__":
    main()
```

### General Limitations

By now we only support Sequential models for our translations.

## Structure of the Project

The structure of the project is as follows.
The [creator](elasticai/creator) folder includes all main concepts of our project, especially the qtorch implementation which is our implementation of quantized PyTorch layer.
It also includes the supported target representations, like the subfolder [nn](elasticai/creator/nn) is for the translation to vhdl.
Additionally, we have unit and integration tests in the [tests](tests) folder.

## Developers Guide

### Install Dev Dependencies

- [poetry](https://python-poetry.org/)
- recommended:
  - [pre-commit](https://pre-commit.com/)
  - [commitlint](https://github.com/conventional-changelog/commitlint) to help following our [conventional commit](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#summary) guidelines
poetry can be installed in the following way:
```bash
pip install poetry
poetry install
poetry shell
pre-commit install
npm install --save-dev @commitlint/{config-conventional,cli}

# Optional:
sudo apt install ghdl
```

### Project Structure

All packages and modules fall into one of five main categories and can thus be found in the corresponding package

 - `nn`: trainable modules that can be translated to vhdl to build a hardware accelerator
 - `base_modules`: (non-public) shared functionality and data structures, that we use to create our neural network software modules
 - `vhdl`: (non-public) shared code that we use to represent and generate vhdl code
 - `file_generation`: provide a very restricted api to generate files or file subtrees under a given root node and defines a basic template api and datastructure, compatible with `file_generation`

### Glossary

 - **fxp/Fxp**: prefix for fixed point
 - **flp/Flp**: prefix for floating point
 - **x**: parameter input tensor for layer with single input tensor
 - **y**: output value/tensor for layer with single output
 - **_bits**: suffix to denote the number of bits, e.g. `total_bits`, `frac_bits`, in python context
 - **_width**: suffix to denote the number of bits used for a data bus in vhdl, e.g. `total_width`, `frac_width`
 - **MathOperations/operations**: definition of how to perform mathematical operations (quantization, addition, matrix multiplication, ...)

### Conventional Commit Rules

We use conventional commits (see [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#summary)). The following commit types are allowed. The message scope is optional.

| Commit Types |
|--------------|
| feat         |
| fix          |
| docs         |
| style        |
| refactor     |
| revert       |
| chore        |
| wip          |
| perf         |

### Tests

Our implementation is tested with unit and integration.
You can run one explicit test with the following statement:

```bash
python3 -m pytest ./tests/path/to/specific/test.py
```

If you want to run all tests, give the path to the tests:

```bash
python3 -m pytest ./tests
```

If you want to add more tests please refer to the Test Guidelines in the following.

#### Test Style Guidelines

##### File IO

In general try to avoid interaction with the filesystem. In most cases instead of writing to or reading from a file you can use a StringIO object or a StringReader.
If you absolutely have to create files, be sure to use pythons [tempfile](https://docs.python.org/3.9/library/tempfile.html) module and cleanup after the tests.
In most cases you can use the [`InMemoryPath`](elasticai/creator/file_generation/in_memory_path.py) class to write files to the RAM instead of writing them to the hard disc (especially for testing the generated VHDL files of a certain layer).

##### Directory structure and file names

Files containing tests for a python module should be located in a test directory for the sake of separation of concerns.
Each file in the test directory should contain tests for one and only one class/function defined in the module.
Files containing tests should be named according to the rubric
`test_<class_name>.py`.
Next, if needed for more specific tests define a class. Then subclass it.
It avoids introducing the category of bugs associated with copying and pasting code for reuse.
This class should be named similarly to the file name.
There's a category of bugs that appear if  the initialization parameters defined at the top of the test file are directly used: some tests require the initialization parameters to be changed slightly.
Its possible to define a parameter and have it change in memory as a result of a test.
Subsequent tests will therefore throw errors.
Each class contains methods that implement a test.
These methods are named according to the rubric
`test_<name>_<condition>`

##### Unit tests

In those tests each functionality of each function in the module is tested, it is the entry point  when adding new functions.
It assures that the function behaves correctly independently of others.
Each test has to be fast, so use of heavier libraries is discouraged.
The input used is the minimal one needed to obtain a reproducible output.
Dependencies should be replaced with mocks as needed.

##### Integration Tests

Here the functions' behaviour with other modules is tested.
In this repository each integration function is in the correspondent folder.
Then the integration with a single class of the target, or the minimum amount of classes for a functionality, is tested in each separated file.

##### System tests

Those tests will use every component of the system, comprising multiple classes.
Those tests include expected use cases and unexpected or stress tests.

##### Adding new functionalities and tests required

When adding new functions to an existing module, add unit tests in the correspondent file in the same order of the module, if a new module is created a new file should be created.
When a bug is solved created the respective regression test to ensure that it will not return.
Proceed similarly with integration tests.
Creating a new file if a functionality completely different from the others is created e.g. support for a new layer.
System tests are added if support for a new library is added.

##### Updating tests

If new functionalities are changed or removed the tests are expected to reflect that, generally the ordering is unit tests -> integration tests-> system tests.
Also, unit tests that change the dependencies should be checked, since this system is fairly small the internal dependencies are not always mocked.

references: https://jrsmith3.github.io/python-testing-style-guidelines.html


# AGiXT

[![GitHub](https://img.shields.io/badge/GitHub-Sponsor%20Josh%20XT-blue?logo=github&style=plastic)](https://github.com/sponsors/Josh-XT) [![PayPal](https://img.shields.io/badge/PayPal-Sponsor%20Josh%20XT-blue.svg?logo=paypal&style=plastic)](https://paypal.me/joshxt) [![Ko-Fi](https://img.shields.io/badge/Kofi-Sponsor%20Josh%20XT-blue.svg?logo=kofi&style=plastic)](https://ko-fi.com/joshxt)

[![GitHub](https://img.shields.io/badge/GitHub-AGiXT%20Core-blue?logo=github&style=plastic)](https://github.com/Josh-XT/AGiXT) [![GitHub](https://img.shields.io/badge/GitHub-AGiXT%20Interactive%20UI-blue?logo=github&style=plastic)](https://github.com/JamesonRGrieve/AGiXT-Interactive) [![GitHub](https://img.shields.io/badge/GitHub-AGiXT%20StreamLit%20UI-blue?logo=github&style=plastic)](https://github.com/AGiXT/streamlit)

[![GitHub](https://img.shields.io/badge/GitHub-AGiXT%20Python%20SDK-blue?logo=github&style=plastic)](https://github.com/AGiXT/python-sdk) [![pypi](https://img.shields.io/badge/pypi-AGiXT%20Python%20SDK-blue?logo=pypi&style=plastic)](https://pypi.org/project/agixtsdk/)

[![GitHub](https://img.shields.io/badge/GitHub-AGiXT%20TypeScript%20SDK-blue?logo=github&style=plastic)](https://github.com/AGiXT/typescript-sdk) [![npm](https://img.shields.io/badge/npm-AGiXT%20TypeScript%20SDK-blue?logo=npm&style=plastic)](https://www.npmjs.com/package/agixt)

[![Discord](https://img.shields.io/discord/1097720481970397356?label=Discord&logo=discord&logoColor=white&style=plastic&color=5865f2)](https://discord.gg/d3TkHRZcjD)
[![Twitter](https://img.shields.io/badge/Twitter-Follow_@Josh_XT-blue?logo=twitter&style=plastic)](https://twitter.com/Josh_XT)

[![Logo](https://josh-xt.github.io/AGiXT/images/AGiXT-gradient-flat.svg)](https://josh-xt.github.io/AGiXT/)

AGiXT is a dynamic Artificial Intelligence Automation Platform engineered to orchestrate efficient AI instruction management and task execution across a multitude of providers. Our solution infuses adaptive memory handling with a broad spectrum of commands to enhance AI's understanding and responsiveness, leading to improved task completion. The platform's smart features, like Smart Instruct and Smart Chat, seamlessly integrate web search, planning strategies, and conversation continuity, transforming the interaction between users and AI. By leveraging a powerful plugin system that includes web browsing and command execution, AGiXT stands as a versatile bridge between AI models and users. With an expanding roster of AI providers, code evaluation capabilities, comprehensive chain management, and platform interoperability, AGiXT is consistently evolving to drive a multitude of applications, affirming its place at the forefront of AI technology.

Embracing the spirit of extremity in every facet of life, we introduce AGiXT. This advanced AI Automation Platform is our bold step towards the realization of Artificial General Intelligence (AGI). Seamlessly orchestrating instruction management and executing complex tasks across diverse AI providers, AGiXT combines adaptive memory, smart features, and a versatile plugin system to maximize AI potential. With our unwavering commitment to innovation, we're dedicated to pushing the boundaries of AI and bringing AGI closer to reality.

## Table of Contents 📖

- [AGiXT](#agixt)
  - [Table of Contents 📖](#table-of-contents-)
  - [⚠ Disclaimers](#-disclaimers)
    - [Monitor Your Usage](#monitor-your-usage)
  - [Key Features 🗝](#key-features-)
  - [Quick Start Guide](#quick-start-guide)
    - [Windows and Mac Prerequisites](#windows-and-mac-prerequisites)
    - [Linux Prerequisites](#linux-prerequisites)
    - [Download and Install](#download-and-install)
    - [Running and Updating AGiXT](#running-and-updating-agixt)
  - [Configuration](#configuration)
  - [Documentation](#documentation)
  - [Other Repositories](#other-repositories)
  - [History](#history)

## ⚠ Disclaimers

### Monitor Your Usage

Please note that using some AI providers (such as OpenAI's GPT-4 API) can be expensive! Monitor your usage carefully to avoid incurring unexpected costs.  We're **NOT** responsible for your usage under any circumstances.

## Key Features 🗝

- **Context and Token Management**: Adaptive handling of long-term and short-term memory for an optimized AI performance, allowing the software to process information more efficiently and accurately.
- **Smart Instruct**: An advanced feature enabling AI to comprehend, plan, and execute tasks effectively. The system leverages web search, planning strategies, and executes instructions while ensuring output accuracy.
- **Interactive Chat & Smart Chat**: User-friendly chat interface for dynamic conversational tasks. The Smart Chat feature integrates AI with web research to deliver accurate and contextually relevant responses.
- **Task Execution & Smart Task Management**: Efficient management and execution of complex tasks broken down into sub-tasks. The Smart Task feature employs AI-driven agents to dynamically handle tasks, optimizing efficiency and avoiding redundancy.
- **Chain Management**: Sophisticated handling of chains or a series of linked commands, enabling the automation of complex workflows and processes.
- **Web Browsing & Command Execution**: Advanced capabilities to browse the web and execute commands for a more interactive AI experience, opening a wide range of possibilities for AI assistance.
- **Multi-Provider Compatibility**: Seamless integration with leading AI providers such as OpenAI (as well as any that use OpenAI style endpoints), ezLocalai, Hugging Face, GPT4Free, Google Gemini, and more.
- **Versatile Plugin System & Code Evaluation**: Extensible command support for various AI models along with robust support for code evaluation, providing assistance in programming tasks.
- **Docker Deployment**: Simplified setup and maintenance through Docker deployment.
- **Audio-to-Text & Text-to-Speech Options**: Integration with Hugging Face for seamless audio-to-text transcription, and multiple TTS choices, featuring Brian TTS, Mac OS TTS, and ElevenLabs.
- **Platform Interoperability & AI Agent Management**: Streamlined creation, renaming, deletion, and updating of AI agent settings along with easy interaction with popular platforms like Twitter, GitHub, Google, DALL-E, and more.
- **Custom Prompts & Command Control**: Granular control over agent abilities through enabling or disabling specific commands, and easy creation, editing, and deletion of custom prompts to standardize user inputs.
- **RESTful API**: FastAPI-powered RESTful API for seamless integration with external applications and services.
- **Expanding AI Support**: Continually updated to include new AI providers and services, ensuring the software stays at the forefront of AI technology.

The features that AGiXT provides cover a wide range of services and are used for different tasks. Refer to [Processes and Frameworks](https://josh-xt.github.io/AGiXT/2-Concepts/1-Processes%20and%20Frameworks.html) for more details about the services and framework.

## Quick Start Guide

### Windows and Mac Prerequisites

- [Git](https://git-scm.com/downloads)
- [Docker Desktop](https://docs.docker.com/docker-for-windows/install/)
- [PowerShell 7.X](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.4)

### Linux Prerequisites

- [Git](https://git-scm.com/downloads)
- [Docker](https://docs.docker.com/get-docker/)
- [Docker Compose](https://docs.docker.com/compose/install/)
- [PowerShell 7.X](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.4) (Optional if you want to use the launcher script, but not required)
- [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) (if using local models on GPU)

### Download and Install

Open a PowerShell terminal and run the following to download and install AGiXT:

Windows and Mac:

```bash
git clone https://github.com/Josh-XT/AGiXT
cd AGiXT
./AGiXT.ps1
```

Linux:

```bash
git clone https://github.com/Josh-XT/AGiXT
cd AGiXT
sudo pwsh ./AGiXT.ps1
```

When you run the `AGiXT.ps1` script for the first time, it will create a `.env` file automatically. There are a few questions asked on first run to help you get started. The default options are recommended for most users.

For advanced environment variable setup, see the [Environment Variable Setup](https://josh-xt.github.io/AGiXT/1-Getting%20started/1-Environment%20Variables.html) documentation for guidance on setup.

```bash
    ___   _______ _  ________
   /   | / ____(_) |/ /_  __/
  / /| |/ / __/ /|   / / /
 / ___ / /_/ / //   | / /
/_/  |_\____/_//_/|_|/_/

-------------------------------
Visit our documentation at https://AGiXT.com
Welcome to the AGiXT Environment Setup!
Would you like AGiXT to auto update? (y/n - default: y):
Would you like to set an API Key for AGiXT? Enter it if so, otherwise press enter to proceed. (default is blank):
Enter the number of AGiXT workers to run (default: 10):
```

After the environment setup is complete, you will have the following options:

```bash
1. Run AGiXT (Stable - Recommended!)
2. Run AGiXT (Development)
3. Run Backend Only (Development)
4. Exit
Enter your choice:
```

Choose Option 1 to run AGiXT with the latest stable release. This is the recommended option for most users. If you're not actively developing AGiXT, this is the option you should choose.

### Running and Updating AGiXT

Any time you want to run or update AGiXT, run the following commands from your `AGiXT` directory:

```bash
./AGiXT.ps1
```

- Access the web interface at <http://localhost:8501>
- Access the AGiXT API documentation at <http://localhost:7437>

## Configuration

Each AGiXT Agent has its own settings for interfacing with AI providers, and other configuration options. These settings can be set and modified through the web interface.

## Documentation

Need more information? Check out the [documentation](https://josh-xt.github.io/AGiXT) for more details to get a better understanding of the concepts and features of AGiXT.

## Other Repositories

Check out the other AGiXT repositories at <https://github.com/orgs/AGiXT/repositories> - these include the AGiXT Streamlit Web UI, AGiXT Python SDK, AGiXT TypeScript SDK, AGiXT Dart SDK, AGiXT C# SDK, and more!

## History

![Star History Chart](https://api.star-history.com/svg?repos=Josh-XT/AGiXT&type=Dat)