Skip to content

Commit a8c0078

Browse files
committed
committing
0 parents  commit a8c0078

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+109737
-0
lines changed

CHEMOTAXIS/02_11_pf18.txt

+49
Large diffs are not rendered by default.

CHEMOTAXIS/02_12_CC-125.txt

+49
Large diffs are not rendered by default.

CHEMOTAXIS/02_12_CC-125_R2.txt

+49
Large diffs are not rendered by default.

CHEMOTAXIS/02_12_CC-125_R3.txt

+49
Large diffs are not rendered by default.

CHEMOTAXIS/02_12_pf18_R2.txt

+49
Large diffs are not rendered by default.

CHEMOTAXIS/02_12_pf18_R3.txt

+49
Large diffs are not rendered by default.

CHEMOTAXIS/PUBLICATION_CHEMOTAXIS INDICES.ipynb

+946
Large diffs are not rendered by default.

CHEMOTAXIS/readme.md

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
### About: The code in the section is needed to find the Chemotaxis Indices (CI) of the Chemotaxis Lane Assay (CLA) Plate
2+
3+
#### Protocol:
4+
DISCLAIMER: This is a shortened experimental protocol for quick reference. Please see publication for final methodology.
5+
1. 3D Print the CLA-plate in ABS.
6+
2. Set up the CLA-plate, so each lane has 1 ml of algae, at a 10^6 cell/ml, and the two reservoirs are filled with 1.5% solidified agar hydrogel. Suggested to do at least 3 replicates of each sample per experiment.
7+
3. Image the plate every 5 minutes for 24 hours. Use a high-resolution camera with minimal "fish-eye" effect.
8+
9+
#### Data processing (imageJ):
10+
1. In ImageJ, open the images as a stack (file-> import -> image sequence).
11+
2. If the video moves you can align the stack to correct (plugin-> registration -> linear stack alignment with SIFT)
12+
3. Convert to 8-bit and invert.
13+
4. Rotate stack so that the lanes are exactly vertical to the screen y axis. Note which resevoir is at the top and bottom for next steps.
14+
5. Crop to the top and the bottom of the lanes. The resevoirs should be completely cropped out.
15+
6. Open (file->open) the imageJ macro [y-axis_lane_profile](y-axis_lane_profile.ijm).
16+
7. Follow the macro prompts to get the intensity along the y-axis for each lane.
17+
8. The average of each lane will be saved as a "lane_number.txt" file in the same directory as the current stack, where lane 1 is the leftmost lane.
18+
9. Rename each 'lane_number.txt' file as "DD_MM_sample_replicate number.txt" for each lane.
19+
20+
#### Data processing (Jupyter Notebook):
21+
1. Move all of the "DD_MM_sample_replicate number(optional).txt" files from imageJ into the same directory as the Jupyter notebook [PUBLICATION_CHEMOTAXIS INDICES](https://github.com/AlaSummer/Chlamy-2024/blob/main/CHEMOTAXIS/PUBLICATION_CHEMOTAXIS%20INDICES.ipynb) for processed sample datasets.
22+
- Note: sample data is provided
23+
3. Follow the prompts in the notebook for further instructions to get the final indices.
24+
25+

CHEMOTAXIS/y-axis_lane_profile.ijm

+100
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
macro "y-axis_lane_profile" {
2+
3+
//called at end of macro by restoreSettings
4+
saveSettings();
5+
6+
if (nSlices==1)
7+
exit("Stack required");
8+
waitForUser("1. Change stack to 8-bit"+"\n"+"2. Align to a horizontal and vertical axis manually."+"\n"+"3.Align stack if moves."+"\n"+"4.Crop to top of agars and sides of plate"+"\n"+"5.INVERT"+"\n"+"6.draw rectangle around ENTIRE channel");
9+
10+
//save locations manually select output
11+
//Dir=getDir("Choose 2_LapseIt_output");
12+
13+
14+
//file save settings
15+
a=getDir("image");
16+
Dir=File.getParent(a);
17+
18+
19+
//gen settings:
20+
setBatchMode(false);
21+
Height1=getHeight();
22+
Width1=getWidth();
23+
Height2=(Height1/2);
24+
25+
//finds pixel lenght of channel for square size
26+
if (selectionType!=0)
27+
exit("Rectangle selection required");
28+
Roi.getBounds(x1, y1, rectangleDimensionx, rectangleDimensiony);
29+
correctedDimensionx = rectangleDimensionx/2;
30+
31+
32+
//gets minLocs coordinates based on max intensity
33+
makeLine(0, Height2, Width1, Height2);
34+
run("Clear Results");
35+
profile = getProfile();
36+
minLocs= Array.findMinima(profile, 50);
37+
Array.sort(minLocs);
38+
minLocsy=newArray(minLocs.length);
39+
minLocsy=Array.fill(minLocsy, Height2);
40+
makeSelection( "polyline", minLocs, minLocsy);
41+
lane=32;
42+
while (Roi.size !=lane) {
43+
Dialog.createNonBlocking("Error");
44+
Dialog.addMessage("Please select");
45+
Dialog.addNumber("Please Select lane number:", 32);
46+
Dialog.addMessage("Current Number:"+Roi.size+"\n"+"To delete point, press alt and click");
47+
Dialog.show();
48+
lane=Dialog.getNumber();
49+
}
50+
Roi.getCoordinates(minLocs, ypoints);
51+
52+
//finding the average 1/3 position of every two maxima to find lane center more accurately
53+
arrayLength=(minLocs.length-1);
54+
finalPosition=newArray(arrayLength);
55+
for (dimension=0; dimension<(minLocs.length-1); dimension++) {
56+
dimension2=dimension+1;
57+
newPosition=((minLocs[dimension2]+2*minLocs[dimension]))/3;
58+
finalPosition[dimension]=newPosition;
59+
}
60+
61+
62+
Dialog.createNonBlocking("Input Parameter");
63+
Dialog.addMessage("Please input rate to sample frames in Stack.");
64+
Dialog.addNumber("Sample every: ", 6);
65+
Dialog.show();
66+
FrameSkipInterval =Dialog.getNumber();
67+
68+
for (i=0; i<finalPosition.length; i++) {
69+
x=finalPosition[i];
70+
BB=i+1;
71+
collectedValues="";
72+
makeRectangle(x, y1, correctedDimensionx, rectangleDimensiony);
73+
roiManager("Add");
74+
N = nSlices;
75+
for (k=1; k<=N; k+=FrameSkipInterval) {
76+
run("Clear Results");
77+
setSlice(k);
78+
// to set the plot profile to run vertically, and take pixel average across x dimesion:
79+
setKeyDown("alt");
80+
profile = getProfile();
81+
collectedValues=collectedValues+profile[1];
82+
for (j=2; j<profile.length; j++) {
83+
collectedValues=collectedValues+ "\t"+profile[j];
84+
}
85+
collectedValues=collectedValues+"\n";
86+
}
87+
88+
//Save settings
89+
file = File.open(Dir+"/lane "+BB+".txt");
90+
print(file, collectedValues);
91+
print("\\Clear");
92+
File.close(file);
93+
setSlice(1);
94+
run("Clear Results");
95+
}
96+
}
97+
}
98+
restoreSettings();
99+
roiManager("Show All with labels");
100+
}

DIFFUSION/2023_PUBLICATION_diffusion_modelling.ipynb

+463
Large diffs are not rendered by default.

DIFFUSION/BPB_1.txt

+48
Large diffs are not rendered by default.

DIFFUSION/BPB_10.txt

+48
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)