# coding : utf8
%matplotlib inline
import os
import sys
sys.path.append(os.getcwd());
import ivPID.PID as PID_controller
print(os.getcwd())
os.chdir(".\config")
#Adding required directories to sys.path. Make sure you are in the Directory with the Git Repo when you start Jupyter Notebook
sys.path.append(os.getcwd());
sys.path.append(os.getcwd()+"\\DLL64");
import time
import Elveflow64
os.chdir("..")
from ctypes import *
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import serial
import threading
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.schedulers import SchedulerNotRunningError
from datetime import datetime,timedelta
import seaborn as sns
import pygame
C:\Users\kanis\Documents\ChronoSeq pygame 2.5.2 (SDL 2.28.3, Python 3.7.16) Hello from the pygame community. https://www.pygame.org/contribute.html
%%javascript
IPython.OutputArea.prototype._should_scroll = function(lines) {
return false;
}
%%writefile
magic as follows.from IPython.core.magic import register_cell_magic
@register_cell_magic
def write_and_run(line, cell):
argz = line.split()
file = argz[-1]
mode = 'w'
if len(argz) == 2 and argz[0] == '-a':
mode = 'a'
with open(file, mode) as f:
f.write(cell)
get_ipython().run_cell(cell)
#Initializing Instrument
%run -i config/instrument_initialization.py
Pressure Controller Connection Started Pressure Controller ID: 0 True {'baudrate': 9600, 'bytesize': 8, 'parity': 'N', 'stopbits': 1, 'xonxoff': False, 'dsrdtr': False, 'rtscts': False, 'timeout': 1, 'write_timeout': 0, 'inter_byte_timeout': None} True {'baudrate': 9600, 'bytesize': 8, 'parity': 'N', 'stopbits': 1, 'xonxoff': False, 'dsrdtr': False, 'rtscts': False, 'timeout': 1, 'write_timeout': 0, 'inter_byte_timeout': None} True {'baudrate': 9600, 'bytesize': 8, 'parity': 'N', 'stopbits': 1, 'xonxoff': False, 'dsrdtr': False, 'rtscts': False, 'timeout': 1, 'write_timeout': 0, 'inter_byte_timeout': None} COM12 {'baudrate': 9600, 'bytesize': 8, 'parity': 'N', 'stopbits': 1, 'xonxoff': False, 'dsrdtr': False, 'rtscts': False, 'timeout': 1, 'write_timeout': 0, 'inter_byte_timeout': None} True Cell Channel Flow Meter ID: 3000 error 0 : Oil Channel Flow Meter ID: 3001 error 0 : Cell Channel Density: 1.2680259943008423 Cell Channel Flow rate: -1103.77129063566 Oil Channel Density: 2.1396427154541016 Oil Channel Flow rate: -1381.2710424672853 COM15 {'baudrate': 9600, 'bytesize': 8, 'parity': 'N', 'stopbits': 1, 'xonxoff': False, 'dsrdtr': False, 'rtscts': False, 'timeout': 1, 'write_timeout': 1, 'inter_byte_timeout': None} True COM9 {'baudrate': 9600, 'bytesize': 8, 'parity': 'N', 'stopbits': 1, 'xonxoff': False, 'dsrdtr': False, 'rtscts': False, 'timeout': 1, 'write_timeout': 1, 'inter_byte_timeout': None} True COM7 {'baudrate': 9600, 'bytesize': 8, 'parity': 'N', 'stopbits': 1, 'xonxoff': False, 'dsrdtr': False, 'rtscts': False, 'timeout': 1, 'write_timeout': 1, 'inter_byte_timeout': None} True COM10 {'baudrate': 9600, 'bytesize': 8, 'parity': 'N', 'stopbits': 1, 'xonxoff': False, 'dsrdtr': False, 'rtscts': False, 'timeout': 1, 'write_timeout': 0, 'inter_byte_timeout': None} True
#Loading functions for setting Valve Controllers
%run -i config/setValveControllers.py
safety_time=5.0
class valve2_2:
def __init__(self,valve_index,valve_controller_id,type_of_valve):
"""
NC is a Normally Closed Valve: you need to turn it on to open it
NO is a Normally Open Valve: you need to turn it on to close it
2_2 valve means there are two bidirectional ports in the valve.
A 3_2 valve can be converted to a 2_2 NO or 2_2 NC Valve by blocking the corresponding port on the valve
"""
assert type_of_valve in ("NC","NO")
assert type(valve_controller_id) is c_int32
self.type=type_of_valve
self.index=valve_index
self.controller=valve_controller_id
if self.controller is valve_controller1:
self.state_vector=valveController1_state
elif self.controller is valve_controller2:
self.state_vector=valveController2_state
else:
self.state_vector=valveController3_state
def OPEN(self):
if self.type is "NC":
(self.state_vector)[self.index]=1
else:
(self.state_vector)[self.index]=0
def CLOSE(self):
if self.type is "NO":
(self.state_vector)[self.index]=1
else:
(self.state_vector)[self.index]=0
class valve3_2:
def __init__(self,valve_index,valve_controller_id,NC_Port,NO_Port,flip=False):
"""
A 3_2 valve means there are 3 bidirectional ports on the valve.
A 3_2 valve can be converted to a 2_2 NO or 2_2 NC Valve by blocking the corresponding port on the valve
Look for the Ports marked NO and NC on the valve if you want to do this.
"""
assert type(valve_controller_id) is c_int32
assert type(NC_Port) is str and type(NO_Port) is str
self.NC_Port=NC_Port
self.NO_Port=NO_Port
self.index=valve_index
self.controller=valve_controller_id
self.flip=flip
if self.controller is valve_controller1:
self.state_vector=valveController1_state
elif self.controller is valve_controller2:
self.state_vector=valveController2_state
else:
self.state_vector=valveController3_state
def ON(self):
if self.flip is False:
(self.state_vector)[self.index]=1
else:
(self.state_vector)[self.index]=0
def OFF(self):
if self.flip is False:
(self.state_vector)[self.index]=0
else:
(self.state_vector)[self.index]=1
class time_point_valve(valve2_2):
all_time_point_valves={}
def __init__(self,valve_index,valve_controller_id,type_of_valve,time_point):
"""
A time point valve is essentially a 2_2 valve but the length of the tubing from the reservoir all the way to the valve
matters. This is because the length determines the amount of time it will take at 2000mbar to reach the manifold when using
a chip which is ~105um in height. These values need to be empirically determined depending on the length of tubing used.
"""
super().__init__(valve_index,valve_controller_id,type_of_valve)
self.time_point=time_point
time_point_valve.all_time_point_valves[time_point]=self
def get_time_point(self):
return self.time_point
valve2_2(<Position on Valve Controller-1>,<valve_controller1,valve_controller2, or valve_controller3>,<Type of Valve: Normally Closed (NC) or Normally Open (NO)>)
bead_lysis_buffer_flush_valve
bead_lysis_buffer_flush_valve= valve2_2(0,valve_controller2,"NC")
0
.valve_controller2
."NC"
.config/valveObjects.py
file.%%write_and_run config/valveObjects.py
bead_lysis_buffer_flush_valve= valve2_2(0,valve_controller2,"NC")
valve3_2(<Position on Valve Controller-1>,<valve_controller1,valve_controller2, or valve_controller3>,<Text String for where the NC Port Connects to>,<Text String for where the NO Port Connects to>,<When Flip is True, the liquid will bypass the Microfluidic Chip when the Valve is ON >)
bead_bypass_valve
bead_bypass_valve= valve3_2(1,valve_controller2,"Chip","XYZ Robot",True)
1
.valve_controller2
."Chip."
"XYZ Robot"
True
.config/valveObjects.py
file.%%write_and_run -a config/valveObjects.py
bead_bypass_valve= valve3_2(1,valve_controller2,"Chip","XYZ Robot",True)
time_point_valve(<Position on Valve Controller-1>,<valve_controller1,valve_controller2, or valve_controller3>,<Type of Valve: Normally Closed (NC) or Normally Open (NO)>,<Number Label for Reservoir/Ice Box/Time Point Valve>)
Back View | Side View | Front View |
---|---|---|
![]() |
![]() |
![]() |
config/valveObjects.py
file.%%write_and_run -a config/valveObjects.py
bead_time_points_valve_list=[]
#Set the values for Position on Valve Controller, and Valve Controller
bead_time_points_valve_list.append(time_point_valve(2,valve_controller2,"NC",1)) #First Time point valve
bead_time_points_valve_list.append(time_point_valve(3,valve_controller2,"NC",2)) #Second Time point valve
bead_time_points_valve_list.append(time_point_valve(4,valve_controller2,"NC",3)) #Third Time point valve
bead_time_points_valve_list.append(time_point_valve(5,valve_controller2,"NC",4)) #Fourth Time point valve
bead_time_points_valve_list.append(time_point_valve(6,valve_controller2,"NC",5)) #Fifth Time point valve
bead_time_points_valve_list.append(time_point_valve(6,valve_controller3,"NC",6)) #Sixth Time point valve
bead_time_points_valve_list.append(time_point_valve(0,valve_controller3,"NC",7)) #Seventh Time point valve
bead_time_points_valve_list.append(time_point_valve(1,valve_controller3,"NC",8)) #Eighth Time point valve
bead_time_points_valve_list.append(time_point_valve(2,valve_controller3,"NC",9)) #Ninth Time point valve
bead_time_points_valve_list.append(time_point_valve(3,valve_controller3,"NC",10)) #Tenth Time point valve
bead_time_points_valve_list.append(time_point_valve(4,valve_controller3,"NC",11)) #Eleventh Time point valve
bead_time_points_valve_list.append(time_point_valve(5,valve_controller3,"NC",12)) #Twelveth Time point valve
config/valveObjects.py
file.%%write_and_run -a config/valveObjects.py
oil_bypass_valve=valve3_2(0,valve_controller1,"Chip","Reusable Oil",True)
cell_bypass_valve= valve3_2(1,valve_controller1,"Chip","Bleach Bottle",True)
cell_gas_vent_valve
.cell_media_flush_valve
.cell_sample_flush_valve1
.cell_sample_flush_valve2
.cell_sample_flush_valve3
.Side View through the Sterlite Container | Top View |
---|---|
![]() |
![]() |
config/valveObjects.py
file.%%write_and_run -a config/valveObjects.py
cell_gas_vent_valve=valve2_2(2,valve_controller1,"NC")
cell_media_flush_valve=valve2_2(3,valve_controller1,"NC")
cell_sample_flush_valve1=valve2_2(4,valve_controller1,"NC")
cell_sample_flush_valve2=valve2_2(5,valve_controller1,"NC")
cell_sample_flush_valve3=valve2_2(6,valve_controller1,"NC")
#Defining Function to Test the Valves. Valves are turn on for 10 seconds, then turned off.
#After 10 seconds the next valve gets test.
def test_valve(valve):
print("Testing Valve:")
if type(valve) is valve3_2 and valve.flip is True:
valve.OFF()
update_valve_states()
time.sleep(10)
reset_valve_states()
time.sleep(10)
elif type(valve) is valve2_2 or type(valve) is time_point_valve:
valve.OPEN()
update_valve_states()
time.sleep(10)
reset_valve_states()
time.sleep(10)
#Making List of all Valves to test
valves_to_test=[]
#Adding all Bead Time Point Valves to the List First
valves_to_test=valves_to_test+bead_time_points_valve_list
#After this remaining valves will be tested.
valves_to_test.append(bead_bypass_valve)
valves_to_test.append(bead_lysis_buffer_flush_valve)
valves_to_test.append(oil_bypass_valve)
valves_to_test.append(cell_bypass_valve)
valves_to_test.append(cell_gas_vent_valve)
valves_to_test.append(cell_media_flush_valve)
valves_to_test.append(cell_sample_flush_valve1)
valves_to_test.append(cell_sample_flush_valve2)
valves_to_test.append(cell_sample_flush_valve3)
for valve in valves_to_test:
test_valve(valve)
Testing Valve: Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 1 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Testing Valve: Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 1 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Testing Valve: Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 1 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Testing Valve: Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 1 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Testing Valve: Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 1 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Testing Valve: Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 1 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Testing Valve: Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 1 0 0 0 0 0 0 0 Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Testing Valve: Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 1 0 0 0 0 0 0 Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Testing Valve: Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 1 0 0 0 0 0 Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Testing Valve: Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 1 0 0 0 0 Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Testing Valve: Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 1 0 0 0 Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Testing Valve: Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 1 0 0 Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Testing Valve: Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 1 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Testing Valve: Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 1 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Testing Valve: Valve Controller 1 State successfully changed! 1 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Testing Valve: Valve Controller 1 State successfully changed! 0 1 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Testing Valve: Valve Controller 1 State successfully changed! 0 0 1 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Testing Valve: Valve Controller 1 State successfully changed! 0 0 0 1 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Testing Valve: Valve Controller 1 State successfully changed! 0 0 0 0 1 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Testing Valve: Valve Controller 1 State successfully changed! 0 0 0 0 0 1 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Testing Valve: Valve Controller 1 State successfully changed! 0 0 0 0 0 0 1 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 1 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 2 State successfully changed! 0 0 0 0 0 0 0 0 Valve Controller 3 State successfully changed! 0 0 0 0 0 0 0 0
#Device Shutdown.
%run -i config/deviceShutdown.py
%%HTML
<iframe width="800" height="600" src="https://www.youtube.com/embed/C1m8psZ4egE?si=58I6bOZN2-_HJJSg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
Back View | Side View | Front View |
---|---|---|
![]() |
![]() |
![]() |
%%HTML
<iframe width="800" height="600" src="https://www.youtube.com/embed/bTKQU7-jtuk?si=nSEFnJsx_sf2dPcn" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
%%HTML
<iframe width="800" height="600" src="https://www.youtube.com/embed/DyeBHlPMCSs?si=VZKUXsXdtJ2rkj2d" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
Route from Behind | Tape under the Cell and Bead Channel Flow Sensors | Label: Cell |
---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
%%HTML
<iframe width="800" height="600" src="https://www.youtube.com/embed/no5nJ0J_t4M?si=pvlBxW0VcPunXym3" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
%%HTML
<iframe width="800" height="600" src="https://www.youtube.com/embed/6gWV8f0ALes?si=D787V8-x3DvRZbdp" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
%%HTML
<iframe width="800" height="600" src="https://www.youtube.com/embed/_8XUUv5e2AA?si=sB4Ej3hwO6kSTb1O" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
%%HTML
<iframe width="800" height="600" src="https://www.youtube.com/embed/iM0LEE1akXg?si=d__zJCKyAW_xedN2" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
From now onwards we will only assemble our CNC Machined 3 Port Reservoir Caps. The common steps for all these reservoirs are:
Assemble the Oil Reservoir:
Place the other end of the PTFE Tubing attached to the reservoir on the Valve Holder near the Oil Flow Sensor Inlet.
Assemble the Recovered Oil Reservoir:
Attach a 40cm or Longer Segment of Tygon Tubing to the Swivel Barb on the Recovered Oil Reservoir.
Next attach a 3/32" Barb to Luer Adapter from Idex to the Double Luer Filter included with the Pressure Controller as shown.
3/32 inch Barb to Luer Adapter and Filter Included with Pressure Controller | After Joining |
---|---|
![]() |
![]() |
Remove the Luer Plug from Channel 2 | Connect Assembled Luer+Filter |
---|---|
![]() |
![]() |
Attach Tygon Tubing | Connect the other end to Oil Reservoir Swivel Barb. |
---|---|
![]() |
![]() |
Side View of the Valves | Top View of the Valves |
---|---|
![]() |
![]() |
50cm Segment of Tygon Tubing to NC Port of Gas Vent Valve | Put the other side inside the Sterlite Container |
---|---|
![]() |
![]() |
Attach a 60cm PTFE tubing Segment. | Leave a small gap from the base. About 1mm. |
---|---|
![]() |
![]() |
%%HTML
<iframe width="800" height="600" src="https://www.youtube.com/embed/j0GCYF-Xlps?si=hshab3uxXW2S6y5g" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
bead_vortex_reservoirs
will contain the numbers 1 through 6.bead_vortex2_reservoirs
will contain the numbers 7 through 12.config/number_label_in_each_vortex.py
file with this information.%%write_and_run config/number_label_in_each_vortex.py
bead_vortex_reservoirs=[1,2,3,4,5,6]#Number Labels in Vortex 1
bead_vortex2_reservoirs=[7,8,9,10,11,12]#Number Labels in Vortex 2
Front View | Side View |
---|---|
![]() |
![]() |
Connect to Channel 3 | Route from behind the ChronoSeq device. |
---|---|
![]() |
![]() |
Lysis Buffer Flush Reservoir Tee Front Port | To NC Port of Lysis Buffer Flush Valve |
---|---|
![]() |
![]() |
Attach to Linear Rail on XY Robot. Leave enough slack. | Tape to Microscope stage. |
---|---|
![]() |
![]() |
Tape Speed Dial on Vortex 1 after setting best Minimum speed | Tape Speed Dial on Vortex 2 after setting best Minimum speed |
---|---|
![]() |
![]() |
config/beadFlowSensorScalingFactor.py
.