超简单!Imagej+python+Macros自动化批量合并荧光通道,详细代码
在Fiji中点击File-New-Script,点击Language选择编程语言Python
在文本编辑框中根据自己文件的命名特征修改以下代码:
(注意文本编辑框里的空格和tab不能混用,报错实在找不出来,用Chatgpt3.5就可以修改好,超简单!)
from ij import IJ
import os
folder1 = "D:\\20230804\\scan.2023-08-04-12-08-18"
for subfolder in [ 'B03', 'B04', 'C03', 'C04']:#培养板上不同的孔
# 创建一个名为 'out' 的文件夹
os.mkdir(os.path.join(folder1, subfolder, 'out'))
folder = os.path.join(folder1, subfolder)
for i in range(865):#每个位置拍了865张照片,但编号从0开始
if i < 10:
for f in ['0', '1', '2']:#每个孔拍了3个位置
for a in ['0', '1', '2', '4']:#每个位置拍了4个通道的照片
img_path = os.path.join(folder, "scan_Plate_D_p0%d_0_%sf0%sd%s.TIF" % (i, subfolder, f, a))
IJ.open(img_path)
print(a)
print(i)
print(img_path)
# 合并通道并保存
IJ.run("Merge Channels...", "c1=[scan_Plate_D_p0%d_0_%sf0%sd2.TIF] c2=[scan_Plate_D_p0%d_0_%sf0%sd1.TIF] c3=[scan_Plate_D_p0%d_0_%sf0%sd0.TIF] c4=[scan_Plate_D_p0%d_0_%sf0%sd4.TIF] create keep" % (i, subfolder, f, i, subfolder, f, i, subfolder, f, i, subfolder, f))
# 构建保存路径
save_path = os.path.join(folder, 'out', str(i) + str(f) + subfolder + "_Composite.png")
IJ.saveAs("PNG", save_path)
IJ.run("Close All")
else:
for f in ['0', '1', '2']:
for a in ['0', '1', '2', '4']:
img_path = os.path.join(folder, 'scan_Plate_D_p' + str(i) + '_0_' + subfolder + 'f0' + f + 'd' + a + '.TIF')
IJ.open(img_path)
print(i)
# 合并通道并保存
IJ.run("Merge Channels...", "c1=[scan_Plate_D_p%d_0_%sf0%sd2.TIF] c2=[scan_Plate_D_p%d_0_%sf0%sd1.TIF] c3=[scan_Plate_D_p%d_0_%sf0%sd0.TIF] c4=[scan_Plate_D_p%d_0_%sf0%sd4.TIF] create keep" % (i, subfolder, f, i, subfolder, f, i, subfolder, f, i, subfolder, f))
# 构建保存路径
save_path = os.path.join(folder, 'out', str(i) + str(f) + subfolder + "_Composite.png")
IJ.saveAs("PNG", save_path)
IJ.run("Close All")
for subfolder in ['C02']:
# 创建一个名为 'out' 的文件夹
os.mkdir(os.path.join(folder1, subfolder, 'out'))
folder = os.path.join(folder1, subfolder)
for i in range(865):
if i < 10:
for f in ['0', '1', '2', '3']:
for a in ['0', '1', '2', '4']:
img_path = os.path.join(folder, "scan_Plate_D_p0%d_0_%sf0%sd%s.TIF" % (i, subfolder, f, a))
IJ.open(img_path)
print(a)
print(i)
print(img_path)
# 合并通道并保存
IJ.run("Merge Channels...", "c1=[scan_Plate_D_p0%d_0_%sf0%sd2.TIF] c2=[scan_Plate_D_p0%d_0_%sf0%sd1.TIF] c3=[scan_Plate_D_p0%d_0_%sf0%sd0.TIF] c4=[scan_Plate_D_p0%d_0_%sf0%sd4.TIF] create keep" % (i, subfolder, f, i, subfolder, f, i, subfolder, f, i, subfolder, f))
# 构建保存路径
save_path = os.path.join(folder, 'out', str(i) + str(f) + subfolder + "_Composite.png")
IJ.saveAs("PNG", save_path)
IJ.run("Close All")
else:
for f in ['0', '1', '2']:
for a in ['0', '1', '2', '4']:
img_path = os.path.join(folder, 'scan_Plate_D_p' + str(i) + '_0_' + subfolder + 'f0' + f + 'd' + a + '.TIF')
IJ.open(img_path)
print(i)
# 合并通道并保存
IJ.run("Merge Channels...", "c1=[scan_Plate_D_p%d_0_%sf0%sd2.TIF] c2=[scan_Plate_D_p%d_0_%sf0%sd1.TIF] c3=[scan_Plate_D_p%d_0_%sf0%sd0.TIF] c4=[scan_Plate_D_p%d_0_%sf0%sd4.TIF] create keep" % (i, subfolder, f, i, subfolder, f, i, subfolder, f, i, subfolder, f))
# 构建保存路径
save_path = os.path.join(folder, 'out', str(i) + str(f) + subfolder + "_Composite.png")
IJ.saveAs("PNG", save_path)
IJ.run("Close All")
祝大家科研顺利!