Giter VIP home page Giter VIP logo

putting-dune's Introduction

Putting Dune

Unittests PyPI version DOI

This repository contains the code of the paper "Learning and Controlling Silicon Dopant Transitions in Graphene using Scanning Transmission Electron Microscopy". The so-called Putting Dune, provides the simulator and methods to learn transition rates of 3-fold silicon-doped graphene.

Method Overview

Data Representation

The protocol buffer data representation used in Putting Dune can be found in putting_dune/putting_dune.proto. You can find a one-to-one correspondence of the protocol buffer messages and a Python dataclass in putting_dune/microscope_utils.py.

When performing alignment and rate learning we expect a sequence of serialized Trajectory objects. As an example, we can serialize trajectories as follows:

from putting_dune import io as pdio
from putting_dune import microscope_utils

trajectories = [
  microscope_utils.Trajectory(
    observations=[
      microscope_utils.Observation(...),
      ...,
    ],
  ),
  ...,
]

pdio.write_records("my-recorded-trajectories.tfrecords", trajectories)

Image Aligner

The first step in our pipeline is to perform image alignment. To train the image alignment model you can follow the steps in putting_dune/image_alignment/train.py.

Once the image aligner is trained you can perform image alignment on the recorded trajectories via the script putting_dune/pipeline/align_trajectories.py. For example,

python -m putting_dune.pipeline.align_trajectories \
  --source_path my-recorded-trajectories.tfrecords \
  --target_path my-aligned-recorded-trajectories.tfrecords \
  --aligner_path my_trained_aligner \
  --alignment_iterations 5

Rate Learner

Once the trajectories have been aligned you can now train the rate model. This can be done with putting_dune/pipeline/train_rate_learner.py. For example,

python -m putting_dune.pipeline.train_rate_learner \
  --source_path my-aligned-recorded-trajectories.tfrecords \
  --workdir my-rate-model

Once training is complete there will be various plots and checkpoints that are saved to the working directory. This model can then be used to derive a greedy controller or predict learned rates.

Citation

@article{schwarzer23stem,
  author = {
    Max Schwarzer and
    Jesse Farebrother and
    Joshua Greaves and
    Ekin Dogus Cubuk and
    Rishabh Agarwal and
    Aaron Courville and
    Marc G. Bellemare and
    Sergei Kalinin and
    Igor Mordatch and
    Pablo Samuel Castro and
    Kevin M. Roccapriore
  },
  title = {Learning and Controlling Silicon Dopant Transitions in Graphene
           using Scanning Transmission Electron Microscopy},
  journal = {CoRR},
  volume = {abs/2311.17894},
  year = {2023},
}

Note

This is not an officially supported Google product.

putting-dune's People

Contributors

conchylicultor avatar github-actions[bot] avatar jessefarebro avatar joshgreaves avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

sergeivkalinin

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.