Giter Club home page Giter Club logo

brainspy-processors's Introduction

brainspy-processors

A python package to support the study of the behaviour of nano-materials by enabling to seamlessly measure through a hardware connection or an equivalent simulation of a nano-device. This package has been created and it is maintained by the Brains team of the NanoElectronics research group at the University of Twente. The package is part of the brainspy project, a set of python libraries to support the development of nano-scale in-materio hardware neural-network accelerators.

This package has been been mainly used for experiments related to obtaining neural-network like in-materio computation from boron-doped silicon.

Tools Theory Tools

If you are interested in

1. Supported processors

1.1 Hardware processor

The aim of the hardware processor is to measure a boron-doped silicon unit, or a boron-doped silicon chip architecture.

Missing description of the architecture for hardware processors.

This can be done using two main setups:

  • CDAQ to NiDAQ
    • Missing description and reference to the manuals
    • Dependencies
      • nidaqmx
  • CDAQ to CDAQ
    • Missing description and reference to the manuals
    • Dependencies
      • nidaqmx

1.2 Simulation

There are two main approaches to simulate the behaviour of a boron-doped silicon unit, or a boron doped silicon chip architecture:

1.2.1 Neural-network based simulation

One approach is to use a neural network to approximate the results of the device.

1.2.1 Kinetic Monte Carlo based simulation

Another one is to use a monte carlo algorithm to analyse the internal physics of the device.

2. Installation instructions

*Note: If you want to make development contributions to the code, please follow the instructions in ()[]

  • This repository uses the Python programming language, with Anaconda as a package manager. In order to use this code, it is recommended to download Anaconda (with python3 version) for your Operating System, and install it following the official instructions:
  • The Anaconda package manager, is based on environments. In order to install the corresponding environment for the code hosted in this repository, follow these instructions:
    • Clone the repository into your computer.
    • Open the terminal in which anaconda is installed.
      • For Windows users, it might be installed as an independent terminal called Anaconda prompt.
      • For Mac and Linux users, it can be run from the regular terminal.
    • Inside the anaconda terminal, navigate to the main folder of the repository, in which the file conda-env-conf.yml is, using the following commands:
      • list directory command: ls
      • change directory command: cd my_folder
    • Install the environment:conda env create -f conda-env-conf.yml
  • Whenever developing or executing the code from this repository, the corresponding environment needs to be activated from the terminal where Anaconda is installed. This is done with the following command: conda activate bspyinstr

3. Developer instructions

This code contains useful libraries that are expected to be used and maintained by different researchers and students at University of Twente. If you would like to collaborate on the development of this or any projects of the Brains Research Group, you will be required to create a GitHub account. GitHub is based on the Git distributed version control system, if you are not familiar with Git, you can have a look at their documentation. If Git commands feel daunting, you are also welcome to use the graphical user interface provided by GitHub Desktop.

The development will follow the Github fork-and-pull workflow. You can have a look at how it works here. Feel free to create your own fork of the repository. Make sure you set this repository as upstream, in order to be able to pull the latest changes of this repository to your own fork by syncing. Pull requests on the original project will be accepted after maintainers have revised them. The code in this repository follows the PEP8 python coding style guide. Please make sure that your own fork is synced with this repository, and that it respects the PEP8 coding style.

3.1 Development environment

We recommend you to use the open source development environment of Visual Studio Code for python, which can be installed following the official guide. For Ubuntu users, it is recommended to be installed using snap: sudo snap install --classic code. We also recommend you to use an auto-formatter in order to follow PEP8. You can install several extensions that will help you with auto-formatting the code:

  • Open your conda terminal and activate the environment (if you do not have it activated already): conda activate bspy-instr
  • Install the auto-formatter packages from pip:
    • pip install autopep8
    • pip install flake8
  • From the same terminal, Open Visual Studio Code with the command: code
  • Go to the extensions marketplace (Ctrl+Shift+X)
  • Install the following extensions:
    • Python (Microsoft)
    • Python Extension Pack (Don Jayamanne)
    • Python Docs (Mukundan)
    • Python-autopep8 (himanoa)
    • cornflakes-linter (kevinglasson)
  • On Visual Studio Code, press Ctrl+Shif+P and write "Open Settings (JSON)". The configuration file should look like this:
    • Note: If you are using windows, you should add a line that points to your flake8 installation: "cornflakes.linter.executablePath": "C:/Users/Your_user/AppData/Local/Continuum/anaconda3/envs/Scripts/flake8.exe"
{
	"[python]": {  
	  "editor.tabSize": 4,  
	  "editor.insertSpaces": true,  
	  "editor.formatOnSave": true  
	},  
	"python.jediEnabled": true,  
	"editor.suggestSelection": "first",  
	"vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue"    
}

Authors

The code is based on similar scripts from the skynet legacy project. The original contributions to the scripts, which are the base of this project, can be found at skynet, and the authorship remains of those people who collaborated in it. Using existing scripts from skynet, a whole new structure has been designed and developed to be used as a general purpose python library. The code has been greatly refactored and improved, and it is currently maintained by:

brainspy-processors's People

Contributors

ualegre avatar hcruiz avatar micbar-21 avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.