###################################################################### # CF RDB production: phase 9: 6/1/98 # # Steve Lappin, SBCL R&D, (818) 376-6369 # # # # final version - reversed spotting procedure # # use with 0.1% tween 20 in the probe buffer # # # # programmed to spot up to 24 additional spots. # # This method uses new membrane holder # # Source is 96 well Pipette Transfer routine # # # # * Absolute values for TIP , source plate , Tool and Fixture plate # # positions must be determined and set prior to operation** # # # # # # Based on original code by Jeff Cahlik (714) 773-8675 6/2/97 # # # ###################################################################### DH # User Variables set Volume 0.6 ;# in ul to repeat dispense set Aspiration_Depth 20 ;# 0-100 % set AspRate 15 ;# 2-30 set AspDelay 1000 ;# in mSecs set Dest_Depth 30 ;# fine down adjustment for Grid Depth in usteps set DspRate 10 ;# 2-30 set DspDelay 1000 ;# in mSecs set PreDisp 15 ;# predispence 0 - 100 % initial dispence compensation set source_tiptouch 1 ;# 1=Yes 0=No ###################################################################### # set Source position set Loc_Source_x 77060 set Loc_Source_y 41330 set Source_top 29860 set Source_bottom 29060 set Source_depth [expr $Source_bottom + (($Source_top - $Source_bottom) * $Aspiration_Depth) / 100 ] puts "" puts $Source_depth set rows 9 ;# The number of source rows to transfer # Set location for P20 tips. set x_tip 76960 set y_tip 26100 set z_tip 30320 # Set location for pos 5 tool. (MP20) set x_tool 73600 set y_tool 26400 set z_tool 29000 set Global_x 0 set Global_y 0 # Set location for Dest1 Array. (anchor reference) set Loc_x_dest(1) 92660 set RLoc_x_dest(1) $Loc_x_dest(1) set Loc_y_dest(1) 26420 set Loc_z_dest(1) 28860 set Loc_z_dest(1) [expr $Loc_z_dest(1) - $Dest_Depth] ;#add in fine tuning # Set location for Dest2 Array. set Loc_x_dest(2) $Loc_x_dest(1) set Loc_y_dest(2) [expr $Loc_y_dest(1) + 13800] set Loc_z_dest(2) $Loc_z_dest(1) # Set safe hover height for layout set z_safe 45100 # T_motor setup set tool_empty 1400 set tool_on 1800 set tip_off 200 # Initialize motor speeds SX 500 SY 500 SZ 500 TS 20 # Set aspiration/despense volume using MP20 / P20 tool. # with slope=.6406mm/ul and offset=.35mm/ul units are . set tool_slope 64.04 set tool_offset 35.0 set asp_volume [expr (($Volume * $tool_slope) + $tool_offset)] set Replicates 10 ;# ********** set Repeat_Volume [expr $asp_volume * ($Replicates + 3)] ;# rows to repeat puts "" puts $asp_volume puts $Repeat_Volume # Pick up a tool . MA $x_tool $y_tool $z_safe $tool_empty TS 10 SZ 50 MT -$tool_on MA 0 0 $z_tool MT $tool_empty SZ 100 MA $x_tool $y_tool $z_safe MA $x_tip $y_tip $z_safe #Initialize counters set i 0 set j 0 set k 0 set Shifty 0 while {$k < $rows} { if {$k==8} { # Reset location for Dest1 Array for R target. (anchor reference) set Loc_x_dest(1) [expr $Loc_x_dest(1) + -451] set Loc_y_dest(1) [expr $Loc_y_dest(1) - 903] set Loc_z_dest(1) [expr $Loc_z_dest(1) - 50] # Set location for Dest2 Array. set Loc_x_dest(2) $Loc_x_dest(1) set Loc_y_dest(2) [expr $Loc_y_dest(1) + 13800] set Loc_z_dest(2) [expr $Loc_z_dest(1) - 50] set shifty 0 } set ArrayNum 1 # Pick up tip. SZ 50 TS 10 MA $x_tip $y_tip 0 [expr $tool_empty + 100] MA $x_tip $y_tip $z_tip DH 2 MA $x_tip $y_tip $z_safe SZ 100 #Begin transfer##### while {$ArrayNum <= 2 } { puts $ArrayNum # Aspirate res_source. MA $Loc_Source_x $Loc_Source_y $z_safe MA 0 0 $Source_top MA 0 0 $Source_depth $tool_empty TS $AspRate MT $Repeat_Volume DL $AspDelay if {$source_tiptouch==1} { MA 0 0 [expr $Source_top - 100] MT -$asp_volume SX 50 MA [expr $Loc_Source_x + 450] 0 0 MA $Loc_Source_x 0 $Source_top SX 500 } TS 10 MA $Loc_Source_x $Loc_Source_y $z_safe # Repeat Dispense at each Dest . if {$Shifty==1} { set y_dest [expr $Loc_y_dest($ArrayNum) - 450] set x_dest $Loc_x_dest($ArrayNum) } else { set y_dest $Loc_y_dest($ArrayNum) set x_dest $Loc_x_dest($ArrayNum) } MA $x_dest $y_dest $z_safe ;# Safe passage to grid set j 0 while {$j<$Replicates} { MA $x_dest $y_dest 0 MA $x_dest $y_dest [expr $Loc_z_dest($ArrayNum) + 400] # if {$j==0} {MT [expr (-$asp_volume * $PreDisp) / 100]} MT -$asp_volume DL $DspDelay MA $x_dest $y_dest $Loc_z_dest($ArrayNum) ;# depth fine tuning is in here already! MA $x_dest $y_dest [expr $Loc_z_dest($ArrayNum) + 50] MA $x_dest $y_dest [expr $Loc_z_dest($ArrayNum) + 50] MA $x_dest $y_dest [expr $Loc_z_dest($ArrayNum) + 500] ;#Change num for clearence puts $x_dest puts $y_dest incr j incr x_dest 2100 } DH 2 incr ArrayNum } #Blowout residules puts "Blowout" MA $Loc_Source_x $Loc_Source_y $z_safe MA 0 0 $Source_top MA 0 0 0 $tool_empty MA 0 0 [expr $Source_top - 100] # tip touch SX 50 MA [expr $Loc_Source_x + 450] 0 0 MA $Loc_Source_x 0 $Source_top SX 500 MA 0 0 $z_safe # put tips away. puts "Tips away" TS 10 MA 0 0 $z_safe MA $x_tip $y_tip $z_safe $tool_empty MA $x_tip $y_tip [expr $z_tip + 2000] MA $x_tip $y_tip 0 $tip_off MA 0 0 [expr $z_tip + 2000] $tool_empty incr x_tip 903 ;#set tip to next row. #Perform shift and increment source if {$Shifty == 1} { incr Loc_x_dest(1) 450 incr Loc_x_dest(2) 450 set Shifty 0 } { set Shifty 1 } set Loc_Source_x [expr $Loc_Source_x + 904] ;# Next row incr k } # put tool away. puts "MP20 away! " MA 0 0 $z_safe MA $x_tool $y_tool $z_safe $tool_empty TS 10 SZ 50 MA 0 0 $z_tool MT -$tool_on MA $x_tool $y_tool $z_safe $tool_empty ##### Begin additional spots - using same variables ##### # Reset Source position set Volume 1 ;# in ul to repeat dispense set Loc_Source_x 85200 set Loc_Source_y 38250 set Source_top 33650 set Source_bottom 32600 set Source_depth [expr $Source_bottom + (($Source_top - $Source_bottom) * $Aspiration_Depth) / 100 ] puts "" puts $Source_depth set rows 6 ;# The number of source rows to transfer !! rows used here equate to wells (in one row)!! # Six extra spots for CFRDB 34+1 method # Reset location for P20 tips. (Row 10, tip 1) set x_tip 85150 set y_tip 23000 set z_tip 33900 # Set location for P20 tool. set x_tool 56800 set y_tool 26500 set z_tool 29000 set Global_x 0 set Global_y 0 # Set location for new Dest1 Array. (anchor reference to left of first spot) set Loc_x_dest(1) 92660 set RLoc_x_dest(1) $Loc_x_dest(1) set Loc_y_dest(1) 30050 set Loc_z_dest(1) 32300 set Loc_z_dest(1) [expr $Loc_z_dest(1) - $Dest_Depth] ;#add in fine tuning # Set location for new Dest2 Array. set Loc_x_dest(2) $Loc_x_dest(1) set Loc_y_dest(2) [expr $Loc_y_dest(1) + 13800] set Loc_z_dest(2) $Loc_z_dest(1) # Set new safe hover height for layout with P20 tool set z_safe 45100 # Set aspiration/despense volume using P20 tool repeat dispense parameters. # with slope=.6500mm/ul and offset=-.10mm/ul units are . set tool_slope 65.00 set tool_offset -10.0 set asp_volume [expr (($Volume * $tool_slope) + $tool_offset)] set Replicates 10 ;# ********** set Repeat_Volume [expr $asp_volume * ($Replicates + 3)] ;# rows to repeat puts "" puts $asp_volume puts $Repeat_Volume # Pick up P20 tool. MA $x_tool $y_tool $z_safe $tool_empty TS 10 SZ 50 MT -$tool_on MA 0 0 $z_tool MT $tool_empty SZ 100 MA $x_tool $y_tool $z_safe MA $x_tip $y_tip $z_safe ## BEGIN MODIFIED NIGHTMARE LOOP ## #Initialize counters set i 0 set j 0 set k 0 set L 1 set m 1 while {$k < $rows} { set ArrayNum 1 # Pick up tip. SZ 50 TS 10 MA $x_tip $y_tip 0 [expr $tool_empty + 100] MA $x_tip $y_tip $z_tip DH 2 MA $x_tip $y_tip $z_safe SZ 100 #Begin transfer##### while {$ArrayNum <= 2 } { puts $ArrayNum # Aspirate res_source. MA $Loc_Source_x $Loc_Source_y $z_safe MA 0 0 $Source_top MA 0 0 $Source_depth $tool_empty TS $AspRate MT $Repeat_Volume DL $AspDelay if {$source_tiptouch==1} { MA 0 0 [expr $Source_top - 100] MT -$asp_volume SX 50 MA [expr $Loc_Source_x + 450] 0 0 MA $Loc_Source_x 0 $Source_top SX 500 } TS 10 MA $Loc_Source_x $Loc_Source_y $z_safe # Repeat Dispense at each Dest. (Removed offset spotting routine "shifty0/1") set y_dest $Loc_y_dest($ArrayNum) set x_dest $Loc_x_dest($ArrayNum) MA $x_dest $y_dest $z_safe ;# Safe passage to grid set j 0 while {$j<$Replicates} { MA $x_dest $y_dest 0 MA $x_dest $y_dest [expr $Loc_z_dest($ArrayNum) + 400] # if {$j==0} {MT [expr (-$asp_volume * $PreDisp) / 100]} MT -$asp_volume DL $DspDelay MA $x_dest $y_dest $Loc_z_dest($ArrayNum) ;# depth fine tuning is in here already! MA $x_dest $y_dest [expr $Loc_z_dest($ArrayNum) + 50] MA $x_dest $y_dest [expr $Loc_z_dest($ArrayNum) + 50] MA $x_dest $y_dest [expr $Loc_z_dest($ArrayNum) + 500] ;#Change num for clearence puts $x_dest puts $y_dest incr j incr x_dest 2100 } DH 2 incr ArrayNum } #Blowout residules puts "Blowout" MA $Loc_Source_x $Loc_Source_y $z_safe MA 0 0 $Source_top MA 0 0 0 $tool_empty MA 0 0 [expr $Source_top - 100] # tip touch SX 50 MA [expr $Loc_Source_x + 450] 0 0 MA $Loc_Source_x 0 $Source_top SX 500 MA 0 0 $z_safe # put tips away. puts "Tips away" TS 10 MA 0 0 $z_safe MA $x_tip $y_tip $z_safe $tool_empty MA $x_tip $y_tip [expr $z_tip + 2000] MA $x_tip $y_tip 0 $tip_off MA 0 0 [expr $z_tip + 2000] $tool_empty incr y_tip 903 ;#set tip to next tip in column. #Rem shift routine and increment source (next well in column) #if {$Shifty == 1} { incr Loc_x_dest(1) 451 incr Loc_x_dest(2) 451 #set Shifty 0 #} { #set Shifty 1 #} set Loc_Source_y [expr $Loc_Source_y + 904] ;# Next row #step destination spot to next column, first position after four spots ( if {$L==4} { incr Loc_y_dest(1) 451 set Loc_x_dest(1) [expr $Loc_x_dest(1) - 1804] incr Loc_y_dest(2) 451 set Loc_x_dest(2) [expr $Loc_x_dest(2) - 1804] set L 0 } incr L 1 #step source and tip to next column, first position after eight spots if {$m==8} { # move probe source incr Loc_Source_x 903 set Loc_Source_y [expr $Loc_Source_y - 7224] # move tip source incr x_tip 903 set y_tip [expr $y_tip - 7224] set m 0 } incr m 1 incr k } # put tool away. puts "P20 away! " MA 0 0 $z_safe MA $x_tool $y_tool $z_safe $tool_empty TS 10 SZ 50 MA 0 0 $z_tool MT -$tool_on MA $x_tool $y_tool $z_safe $tool_empty ##### End of additional spots ##### DH puts "CFRDB phase 4 program finished." unset shifty unset x_tool unset y_tool unset z_tool unset tool_empty unset tool_on unset tip_off unset z_safe unset Loc_x_dest(1) unset Loc_y_dest(1) unset Loc_z_dest(1) unset Loc_x_dest(2) unset Loc_y_dest(2) unset Loc_z_dest(2) unset Loc_Source_x unset Loc_Source_y unset Source_bottom unset y_tip unset x_tip unset z_tip unset tool_slope unset tool_offset unset x_dest unset y_dest unset AspRate unset Aspiration_Depth unset Source_top unset Source_depth unset ArrayNum unset Replicates unset Repeat_Volume unset asp_volume unset Volume unset i unset j unset k unset L