Giter VIP home page Giter VIP logo

cellasic-pulse-width-modulation's Introduction

README to CellASIC-Pulse-Width-Modulation
A set of m-files (referred to hereafter as RxPWM) are created to deliver arbitrary concentrations of drug at arbitrary times to cells using the ONIX microfluidic system by CellASIC. In essence, pulse-width-modulation (PWM) is used to deliver any concentration of drug between 0 and the concentration of drug found in a sourcing well.

As of 11/6/2011 PWM has not been shown to be viable in delivering arbitrary drug concentrations. In other words, caveat emptor.

RxPWM runs in the MATLAB environment. RxPWM will accept a pair of vectors that contain a normalized 'drug signal' and a vector of the same length representing time. The units of time are assumed to be minutes. RxPWM will interpolate the drug signal using splines or lines and create a PWM signal at the resolution of the carrier frequency. The carrier frequency can be specified by the user. However, it has a lower limit set by the physical limitations of the pumps in the ONIX system.

The lower limit is defined as follows: The minimum switching time of the ONIX pump valves is defined as the smallest permissible duty cycle chosen to be 5%. Based on the ONIX spec sheet of the valves, they have a 5 ms or less "ON" and 4 ms or less "OFF". Since it is unclear how much drug will actually be delivered during a rapid "ON"/"OFF" pulse of 9ms, an estimation of the drug delivered is made. Assuming drug concentration linearly rises from 0 to MAX (or MAX to 0) during the "ON" (or "OFF") interval, a rapid "ON"/"OFF" is approximately a 4.5 ms pulse of MAX drug concentration. The error in the estimation can be reduced by increasing the time spent "ON". If the minimum pulse width is chosen to be 18ms, then the worst case scenario is a 20% error of drug delivered at 5% duty cycle, an acceptable error in most situations. The minimum carrier frequency is therefore decided to be 20*18ms = 360ms = 2.78Hz @ 50% duty cycle. The carrier frequency should be much higher than the frequency content in the modulated waveform.

The 5% cutoff limits pulses to duty cycles between 5% and 95%. Note that a calculated duty cycle of less than 5% is rounded to 0%, and a calculated duty-cycle of more than 95% is rounded to 100%.

The output of RxPWM is either an m-file that contains code sufficient for interfacing with the ONIX machine through microManager or a text file that can be imported into the ONIX software provided by CellASIC.

By default, the modulated waveform is converted into PWM using the sawtooth method. By default, the pulses always begin "ON". Options to change these defaults are forthcoming and include symmetric pulses.

There is also an option to set the pressure the ONIX valves apply to each well, which leads to different flow rates. The default pressure is 2 PSI. It is interesting to ponder whether or not cells "see" the same concentration of a drug at different flow rates.

Author(s): Kyle Karhohs

cellasic-pulse-width-modulation's People

Contributors

karhohs avatar

Stargazers

 avatar  avatar

Watchers

 avatar

cellasic-pulse-width-modulation's Issues

Function that converts PWM code to CellASIC text file

The control over the ONIX manifold can be stored in text format, as opposed to setting up a GUI. This function will generate this text file, which will contain all his function will be helpful when it is unnecessary to directly interface with the ONIX system using MicroManager.

Add ability to track error in intersective method

Currently, there is no error correction in the intersective method file. Error accumulates due to rounding 95% up and 5% down. This error can be counted and corrected similar to the extra day in a year for a leap year.

Function that uses saw tooth method to derive pulse train

This is the simplest PWM method, so it should be the first to be implemented. The RxPWM program will create a pulse train for an arbitrary waveform. To connect the dots a spline function or a line will be used. The line is the simplest to implement, so it will happen first. The sawtooth method is all about finding the intersection between two curves.

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.