Git Product home page Git Product logo

moma's Introduction

README

This git repository is the artifact of the Sigcomm 2023 paper "Towards Practical and Scalable Molecular Networks".

DOI

Our code as well as data are both available.

How to download this artifact?

Use git clone to download this repository.

How to install this artifact?

This project is composed of the experiment part and the data processing part.

Experiment

For experiment part, please prepare two Arduinos (one for TXs and one for RX) and install the Arduino IDE. The following two header files required to run the code, which can be found in the Arduino IDE library (In the Arduino IDE, click the Tools > Manage Libraries...).

  • Ticker.h
  • OneWire.h

And of course, you need to prepare pumps, tubes, salt (and/or baking soda) and the EC reader.

Data processing

For data processing part, please install MATLAB R2019b or any later version. The following toolboxes are highly recommended.

  • Communication Toolbox

    • This toolbox is used in code_algo/get_gold_code.m to generate Gold code of certain parameters, and code_algo/get_gold_code2.m to generate MoMA code (which is Gold code modulated with Manchester code).
    • However, these two functions are only used in simulation for the early stage of the research. Once we go to experiment, we only need to generate the codes of required length and store in a TXT file before hand. Thus, during transmission the TX Arduino will pick the code for each TX from this file. Since MoMA assumes that the RX knows the pre-assigned code to each TX, the decoding will proceed depending on this assignment.
  • Parallel Computing Toolbox

    • This toolbox is used in loop_emulates_txrx_all.m and loop_emulates_txrx_noncoherent.m to parallel the decoding of multiple traces, thus accelerate the whole result generating procedure. Note that this toolbox is NOT used to speed up the decoding of ONE trace. Instead, each CPU core is used to process different traces concurrently.
    • You can get rid of this toolbox by making the following modifications to the code, which will definitely and extremely increase the time to generate the results.
      • In main_emulates_txrx_allloop.m, comment the following code from line 5 to 7.
      if isempty(gcp("nocreate"))
          parpool(feature("numcores"));
      end
      
      This code creates the maximum number of workers, which is the same as the number of the CPU cores. But you can also specify a suitable number you want, e.g. 8 workers with the following code
      if isempty(gcp("nocreate"))
          parpool(8);
      end
      
      • In loop_emulates_txrx_all.m and loop_emulates_txrx_noncoherent.m, change the code in line 108 from
      parfor kk = 1:totalruns
      
      to
      for kk = 1:totalruns
      

How to run this artifact?

The experiment is conducted on a testbed controlled by two Arduinos. If you would like to set up the testbed yourself, please refer to Setting up the testbed. We also provide our experimental data in this repository, which can be directly applied for the data processing part.

The data processing codes are MATLAB scripts and functions.

How to compare this artifact’s outputs to outputs described in the paper?

We provide two MATLAB scripts that can directly generate the figures in the paper.

main_emulates_txrx_allloop.m processes the experiment data and save the results as .mat files in corresponding folders. The script contains multiple loops, each defining a variable that specifies either the experiment data or the algorithm. Since not all combinations are reported in the paper, we add multiple if conditions and mark in comment their corresponding figure indices. Please feel free to modify the if conditions if you would like to see other results. The script then calls loop_emulates_txrx_all.m and loop_emulates_txrx_noncoherent.m to process the specified data in the specified way.

code_figure/generate_all_fig.m reads the results in .mat files and generate the figures. It calls multiple scripts, each generating one figure, and corresponding indices in the paper are marked in comment. And you can run each of them separately as well.

Simply running these two scripts in sequence will generate all the reported figures, but main_emulates_txrx_allloop.m may take a long time.

How to reuse this artifact?

main_emulate_txrx.m is a cleaner version of main_emulates_txrx_allloop.m, which is used to debug the algorithms with a single experiment trace.

main_sim_txrx.m is a main file which calls the simulation functions used in the early stage of this project. It has nothing to do with the experiment results though, but to familiarize new users to the repository.

For more details about the scripts, please refer to Processing the data.

moma's People

Contributors

jmwinding 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.