Skip to content

Commit

Permalink
Merge pull request #3 from fish-quant/dev
Browse files Browse the repository at this point in the history
Finalize
  • Loading branch information
muellerflorian authored Mar 9, 2023
2 parents f94d873 + 22edd09 commit c62d649
Show file tree
Hide file tree
Showing 14 changed files with 521 additions and 6 deletions.
5 changes: 4 additions & 1 deletion .github/workflows/python-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@

name: Upload Python Package

on: push
on:
push:
branches:
- main

jobs:
build-n-publish:
Expand Down
21 changes: 18 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
# Automator
![GitHub](https://img.shields.io/github/license/fish-quant/autofish)
[![Python 3.7](https://img.shields.io/badge/python-3.7-blue.svg)](https://www.python.org/downloads/release/python-390/)

# autoFISH - automated FISH experiments

Python library to control an automated fluidics system and perform microscope acquisition for iterative FISH experiments.

Expand All @@ -13,15 +16,27 @@ See dedicated documentation [**here**](https://github.com/fish-quant/autofish/bl
### Installation

1. Download latest version of miniconda from [**here**](https://docs.conda.io/en/latest/miniconda.html) (can also be Python 3.X).
2. Open Anaconda terminal and create dedicated environment: `conda create --name autofish python=3.7`
2. Open Anaconda terminal and create dedicated environment: `conda create --name autofish python=3.9`
3. Activate environment: `conda activate autofish`
4. Pip install `pip install -i https://test.pypi.org/simple/ autofish==0.0.1`
4. Pip install `pip install -i https://test.pypi.org/simple/ autofish`

### Starting autofish

1. Open Anaconda terminal and activate environment: `conda activate autofish`
2. Start user interface with command `autofish`

### Configuration files

The behavior of the fluidics and acquistion system is defined by several config files.

* To test the installation of autofish, you can use demo configurations which require neither a microscope nor a fluidics systems: <https://github.com/fish-quant/autofish/tree/main/demo>

* We provide config files that we use on our system (with a Nikon Ti): <https://github.com/fish-quant/autofish/tree/main/configs>

### Building the Fluidics system

See dedicated documentation [**here**](https://github.com/fish-quant/autofish/blob/master/docs/fluidics_construction.pdf) for how to build the fluidics system.

## Reporting a problem/suggestion

If you encounter a problem or you have a suggestion, please file an [**issue**](https://github.com/fish-quant/autofish/issues).
1 change: 1 addition & 0 deletions configs/_file_sync.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0
92 changes: 92 additions & 0 deletions configs/experiment_config__seqFISH-CLASSIC-SABER.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
#Different buffers: stored as a list [valve-id,cnc-plate,cnc-well or position ]
buffers:
wash_SABER_v3: [3,null,null]
wash_v4: [4,null,null]
image_v5: [5,null,null]

clean_plate: [6,1,A1]
prime_plate: [6,1,A2]

dapi_r1: [6,1,A3]
w_r1: [6,1,A4]
h_r1: [6,1,A5]

w_r2: [6,1,A6]
h_r2: [6,1,A7]

w_r3: [6,1,A8]
h_r3: [6,1,A9]

w_r4: [6,1,A10]
h_r4: [6,1,A11]

w_r5: [6,1,A12]
h_r5: [6,1,B1]
SAB_w_r5: [6,1,B2]
SAB_h_IM_r5: [6,1,B3]

w_r6: [6,1,B4]
h_r6: [6,1,B5]
SAB_w_r6: [6,1,B6]
SAB_h_IM_r6: [6,1,B7]

w_r7: [6,1,B8]
h_r7: [6,1,B9]
SAB_w_r7: [6,1,B10]
SAB_h_IM_r7: [6,1,B11]

w_r8: [6,1,B12]
h_r8: [6,1,C1]
SAB_w_r8: [6,1,C2]
SAB_h_IM_r8: [6,1,C3]


# Sequence of a given fluidic run. Possible actions and parameters are "buffer": buffers listed in buffer_config.yaml, ii will be looped over; pump: time for pumping [s], pause: time for pause [s], image: 1.
sequence:
- buffer: w_ii
- pump: 180
- buffer: h_ii
- pump: 180
- pause: 1200
- buffer: wash_v4
- pump: 180
- pause: 180
- - round: r1
- buffer: dapi_ii
- pump: 180
- pause: 180
- buffer: wash_v4
- pump: 180
- pause: 60
- pump: 180
- pause: 180
- - round: r5,r6,r7,r8
- buffer: SAB_w_ii
- pump: 180
- pause: 180
- buffer: SAB_h_IM_ii
- pump: 180
- pause: 1200
- buffer: wash_SABER_v3
- pump: 180
- pause: 180
- buffer: wash_SABER_v3
- pump: 180
- pause: 180
- buffer: image_v5
- pump: 180
- pause: 120

#Well plate setup: once calibrated, you usuall don't have to change this
well_plate:
top_right:
x: 63
y: 99
bottom_left:
x: 0
y: 0
columns: 8
rows: 12
well_spacing: 9
z_base: -37
feed: 500
98 changes: 98 additions & 0 deletions configs/experiment_config__seqFISH-DAPI.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
#Different buffers: stored as a list [valve-id,cnc-plate,cnc-well or position ]
buffers:
wash_valve4: [4,null,null]
wash_SSC_valve5: [5,null,null]
image_valve6: [6,null,null]
clean_plate: [6,1,A1]
prime_plate: [6,1,A2]
dapi_r1: [6,1,A3]
w_r1: [6,1,A4]
h_r1: [6,1,A5]
w_r2: [6,1,A6]
h_r2: [6,1,A7]
w_r3: [6,1,A8]
h_r3: [6,1,A9]
w_r4: [6,1,A10]
h_r4: [6,1,A11]
w_r5: [6,1,A12]
h_r5: [6,1,B1]
w_r6: [6,1,B2]
h_r6: [6,1,B3]
w_r7: [6,1,B4]
h_r7: [6,1,B5]
w_r8: [6,1,B6]
h_r8: [6,1,B7]
w_r9: [6,1,B8]
h_r9: [6,1,B9]
w_r10: [6,1,B10]
h_r10: [6,1,B11]
w_r11: [6,1,B12]
h_r11: [6,1,C1]
w_r12: [6,1,C2]
h_r12: [6,1,C3]
w_r13: [6,1,C4]
h_r13: [6,1,C5]
w_r14: [6,1,C6]
h_r14: [6,1,C7]
w_r15: [6,1,C8]
h_r15: [6,1,C9]
w_r16: [6,1,C10]
h_r16: [6,1,C11]
w_r17: [6,1,C12]
h_r17: [6,1,D1]
w_r18: [6,1,D2]
h_r18: [6,1,D3]
w_r19: [6,1,D4]
h_r19: [6,1,D5]
w_r20: [6,1,D6]
h_r20: [6,1,D7]


# Sequence of a given fluidic run. Possible actions and parameters are "buffer": buffers listed in buffer_config.yaml, ii will be looped over; pump: time for pumping [s], pause: time for pause [s], image: 1.
sequence:
- buffer: wash_SSC_valve5
- pump: 180
- pause: 60
- buffer: w_ii
- pump: 180
- buffer: h_ii
- pump: 180
- pause: 1800
- buffer: wash_valve4
- pump: 180
- pause: 60
- - round: r1
- buffer: dapi_ii
- pump: 180
- pause: 180
- buffer: wash_valve4
- pump: 180
- pause: 60
- pump: 180
- pause: 60
- buffer: wash_SSC_valve5
- pump: 180
- pause: 60
- buffer: image_valve6
- pump: 180
- pause: 120
- image: 1

#Well plate setup: once calibrated, you usuall don't have to change this
well_plate:
top_right:
x: 63
y: 99
bottom_left:
x: 0
y: 0
columns: 8
rows: 12
well_spacing: 9
z_base: -37
feed: 500





14 changes: 14 additions & 0 deletions configs/microscope_config__NikonTi_Cy3-Cy5-DAPI.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
microscope:
type: 'NIKON_TI'
timeout: 5000
xy_drive_name: 'TIXYDrive'
z_drive_name: 'TIPFSOffset'
channel_group: 'Channel'
channels: ['Cy3_75', 'Cy5_50','Dapi_50']
channel_blank: Cy3_0
channel_exposures_ms: [300,50,100]
z_start: -15
z_end: 60
z_step: 2.5
mm_app_path: 'C:\Program Files\Micro-Manager-2.0-nightly'
mm_config_file: 'Zstack_with_PFS.cfg'
14 changes: 14 additions & 0 deletions configs/microscope_config__NikonTi_Cy3-Cy5.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
microscope:
type: 'NIKON_TI'
timeout: 5000
xy_drive_name: 'TIXYDrive'
z_drive_name: 'TIPFSOffset'
channel_group: 'Channel'
channels: ['Cy3_75', 'Cy5_50']
channel_blank: Cy3_0
channel_exposures_ms: [300,50]
z_start: -15
z_end: 60
z_step: 2.5
mm_app_path: 'C:\Program Files\Micro-Manager-2.0-nightly'
mm_config_file: 'Zstack_with_PFS.cfg'
32 changes: 32 additions & 0 deletions configs/system_config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"pump": {
"test_command": "1#\r",
"response": "REGLO DIGITAL",
"type": "REGLO DIGITAL",
"baudrate": 9600,
"COM": "COM8",
"Revolution": "CCW",
"Flowrate": 0.5
},
"valve": {
"test_command": "/1h30001R\r",
"response": "/0",
"type": "HAMILTON MVP",
"baudrate": 9600,
"COM": "COM7"
},
"plate": {
"wake_up": "\r\n\r\n",
"test_command": "$I\n",
"response": "VER:",
"type": "CNCRouter3018PRO",
"baudrate": 115200,
"COM": "COM11"
},
"flow_sensor": {
"type": "Sensirion_csv",
"log_file": "C:\\Temp\\DataLog.csv",
"kernel_size": 20,
"flow_min": 20
}
}
Loading

0 comments on commit c62d649

Please sign in to comment.