aanntwin
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (16.9%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: dsd65535
- License: mit
- Language: Python
- Default Branch: main
- Size: 447 KB
Statistics
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 2
- Releases: 0
Metadata Files
README.md
AANNTwin
The Analog ANN digital twin (AANNTwin) models the behavior of an analog convolutional neural network, similar to the one presented in:
Nikita Mirchandani. Ultra-Low Power and Robust Analog Computing Circuits and System Design Framework for Machine Learning Applications
It uses the PyTorch library with customized layers which model real hardware nonidealities. These models are informed by simulation and hardware testing, while hardware design is in turn informed by results from scripts in this library, enabling an iterative design approach. This library also produces the weights that are ultimately used in the hardware, leveraging the accurate low-level modeling during training to optimize performance. Finally, the library includes various high-level optimization scripts for tuning hyperparameters, quantization, normalization and other details, in addition to determining specifications for the hardware design. The intended flow of operation is illustrated at a high level below:

Organization
The model can be found in aanntwin.
The main entry point is aanntwin/__main__.py.
All other top-level scripts are in aanntwin/scripts.
Installation
To use this library, Python version 3.11 is required. Refer to https://www.python.org/ for more information on Python. Note that due to PyTorch CUDA limitations, the version is currently pinned.
Per PEP-518, this project uses the pyproject.toml format
for defining dependencies and other packaging information.
Thus, it can be installed using most modern methods including Pip.
However, it is recommended to install this library using Poetry.
This ensures that all dependencies are at the exact version on which they were tested,
using to the poetry.lock file included.
For official installation instructions, refer to https://python-poetry.org/.
In short, the following is an example installation procedure:
$ curl -sSL https://install.python-poetry.org | python3 -
Retrieving Poetry metadata
# Welcome to Poetry!
This will download and install the latest version of Poetry,
a dependency and package manager for Python.
It will add the `poetry` command to Poetry's bin directory, located at:
/home/ddimitrov/.local/bin
You can uninstall at any time by executing this script with the --uninstall option,
and these changes will be reverted.
Installing Poetry (1.7.1): Done
Poetry (1.7.1) is installed now. Great!
You can test that everything is set up by executing:
`poetry --version`
$ poetry --version
Poetry (version 1.7.1)
This repository can be cloned as follows:
$ git clone git@github.com:dsd65535/aanntwin.git
Cloning into 'aanntwin'...
remote: Enumerating objects: 301, done.
remote: Counting objects: 100% (301/301), done.
remote: Compressing objects: 100% (106/106), done.
remote: Total 301 (delta 202), reused 286 (delta 191), pack-reused 0
Receiving objects: 100% (301/301), 93.87 KiB | 814.00 KiB/s, done.
Resolving deltas: 100% (202/202), done.
$ cd aanntwin/
Using Pip, it can be installed as follows:
$ pip install .
Using Poetry, it can be installed as follows:
$ poetry install
Usage
Using Poetry, the top-level script can be run as follows:
$ poetry run python aanntwin
This will create, train and test a model.
The script caches all outputs to ./cache/models.
For possible arguments, run:
$ poetry run python aanntwin --help
All scripts may be run directly, e.g.:
$ poetry run python aanntwin/scripts/sweep_model_parameters.py
Owner
- Name: Dimitar Dimitrov
- Login: dsd65535
- Kind: user
- Location: Greater Boston Area
- Website: http://dimitar.io
- Repositories: 5
- Profile: https://github.com/dsd65535
Citation (CITATION.cff)
cff-version: 1.2.0 message: "If you use this software, please cite it as below." authors: - family-names: "Dimitrov" given-names: "Dimitar" title: "AANNTwin" version: 0.1.0 date-released: 2025-04-21 url: "https://github.com/dsd65535/aanntwin"
GitHub Events
Total
- Watch event: 1
- Delete event: 1
- Push event: 14
Last Year
- Watch event: 1
- Delete event: 1
- Push event: 14
Dependencies
- appnope 0.1.3
- astroid 3.0.2
- asttokens 2.4.1
- backcall 0.2.0
- black 23.12.1
- certifi 2023.11.17
- charset-normalizer 3.3.2
- classify-imports 4.2.0
- click 8.1.7
- colorama 0.4.6
- decorator 5.1.1
- dill 0.3.7
- executing 2.0.1
- filelock 3.13.1
- fsspec 2023.12.2
- gitdb 4.0.11
- gitpython 3.1.40
- idna 3.6
- ipython 8.12.3
- isort 5.13.2
- jedi 0.19.1
- jinja2 3.1.2
- markupsafe 2.1.3
- matplotlib-inline 0.1.6
- mccabe 0.7.0
- mpmath 1.3.0
- mypy 1.8.0
- mypy-extensions 1.0.0
- networkx 3.1
- numpy 1.24.4
- nvidia-cublas-cu12 12.1.3.1
- nvidia-cuda-cupti-cu12 12.1.105
- nvidia-cuda-nvrtc-cu12 12.1.105
- nvidia-cuda-runtime-cu12 12.1.105
- nvidia-cudnn-cu12 8.9.2.26
- nvidia-cufft-cu12 11.0.2.54
- nvidia-curand-cu12 10.3.2.106
- nvidia-cusolver-cu12 11.4.5.107
- nvidia-cusparse-cu12 12.1.0.106
- nvidia-nccl-cu12 2.18.1
- nvidia-nvjitlink-cu12 12.3.101
- nvidia-nvtx-cu12 12.1.105
- packaging 23.2
- parso 0.8.3
- pathspec 0.12.1
- pexpect 4.9.0
- pickleshare 0.7.5
- pillow 10.2.0
- platformdirs 4.1.0
- prompt-toolkit 3.0.43
- ptyprocess 0.7.0
- pure-eval 0.2.2
- pygments 2.17.2
- pylint 3.0.3
- reorder-python-imports 3.12.0
- requests 2.31.0
- six 1.16.0
- smmap 5.0.1
- stack-data 0.6.3
- sympy 1.12
- tomlkit 0.12.3
- torch 2.1.2
- torchvision 0.16.2
- traitlets 5.14.1
- triton 2.1.0
- typing-extensions 4.9.0
- urllib3 2.1.0
- wcwidth 0.2.13
- black ^23.9.1 develop
- ipython ^8.12.3 develop
- mypy ^1.6.0 develop
- pylint ^3.0.1 develop
- reorder-python-imports ^3.12.0 develop
- gitpython ^3.1.40
- numpy ^1.24
- python ~3.11
- torch ^2.1.0
- torchvision ^0.16.0