欢迎光临散文网 会员登陆 & 注册

超简单!Imagej+python+Macros自动化批量合并荧光通道,详细代码

2023-08-09 14:22 作者:Ewigelsq  | 我要投稿

在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")


祝大家科研顺利!

超简单!Imagej+python+Macros自动化批量合并荧光通道,详细代码的评论 (共 条)

分享到微博请遵守国家法律