pixFRET - 运行插件的时间推移图像/ /循环?

我刚刚开始ImageJ的工作(因此不具有与宏编程太多的经验)来分析我的显微图。 为了产生被通过我使用的插头中用于频谱泄放校正FRET逐像素图像:pixFRET。这个插件需要3张图片才能工作:FRET,Do​​nor,Acceptor。到目前为止,我必须自己打开每张照片,这对于大量时间堆叠(> 1000张图像)来说是非常不方便的。我正在寻找一种方法来循环插件或创建一些宏来做到这一点。pixFRET - 运行插件的时间推移图像/ /循环?

我的数据结构的简短说明: workfolder \ filename_t001c1(通道1图像 - 供体在时间点001), filename_t001c2(通道2图像 - FRET在时间点001), ... t001c3(可忽略) ... t001c4(频道4图像 - 在时间点001的接受者)。

我会在由pixFRET自动分析(与设定参数),将结果应保存在一个输出文件夹的每个时间点以产生C2/C1/C4的堆叠。

我为每一个建议,感谢我的最大的问题是这整叠代/ pixFRET分析的循环(只能做本手册现在)。

感谢 大卫

回答:

我没有找到一种方法,包括直接从pixFRET插件参数和命令。然而,在这里我展示了一个与IJ_Robot一起工作的工作来添加这些命令。我还根据时间序列的第一张图像,添加了一些东西来执行相机通道的对齐。

// Macro for creating time resolved pixFRET images with a alignment of both cameras used 

// a separate setting file is required for pixFRET -> put this into the same folder as the pixFRET plugin

// the background region has to be set manually in this macro

// IJ_robot uses cursor movements - DO NOT move the cursor while excuting the macro + adjust IJ_robot coordinates when changing the resolution/system.

dir = getDirectory("Select Directory");

list = getFileList(dir);

//single alignment

run("Image Sequence...", "open=[dir] number=2 starting=1 increment=1 scale=100 file=[] or=[] sort");

rename(File.getName(dir));

WindowTitle=getTitle()

rename(WindowTitle+toString(" Main"))

MainWindow=getTitle()

NSlices=getSliceNumber()

xValue=getWidth()/2

yValue=getHeight()/2

//setTool("rectangle");

makeRectangle(0, 0, xValue, yValue);

run("Align slices in stack...", "method=5 windowsizex="+toString(xValue*2-20)+" windowsizey="+toString(yValue*2-20)+" x0=10 y0=10 swindow=0 ref.slice=1 show=true");

selectWindow("Results");

XShift=getResult("dX", 0);

YShift=getResult("dY", 0);

File.makeDirectory(toString(File.getParent(dir))+toString("\\")+"test"+" FRET");

for(i=0;i<list.length;i+=4){

open(dir+list[i+1]);

run("Translate...", "x=XShift y=YShift interpolation=None stack");

open(dir+list[i]);

open(dir+list[i+3]);

run("Translate...", "x=XShift y=YShift interpolation=None stack");

wait(1000);

run("Images to Stack", "name=Stack title=[] use");

selectWindow("Stack");

makeRectangle(15, 147, 82, 75); //background region

run("PixFRET...");

run("IJ Robot", "order=Left_Click x_point=886 y_point=321 delay=500 keypress=[]");

run("IJ Robot", "order=Left_Click x_point=874 y_point=557 delay=500 keypress=[]");

selectWindow("NFRET (x100) of Stack");

save(toString(File.getParent(dir))+toString("\\")+"test"+" FRET"+toString(i) +".tif");

selectWindow("Stack");

close();

selectWindow("FRET of Stack");

close();

selectWindow("NFRET (x100) of Stack");

close();

run("IJ Robot", "order=Left_Click x_point=941 y_point=57 delay=300 keypress=[]");

}

感谢您的帮助一月如果你能想到的方法来调用这些pixFRET直接命令,而不是使用Ij_robot,请让我知道。

回答:

采取从Fiji (is just ImageJ)this tutorial为出发点,并使用宏录制(插件>宏>记录...),以获得neccessary命令。然后

宏代码可能是这个样子:

function pixfret(path, commonfilename) { 

open(path + commonfilename + "c2");

open(path + commonfilename + "c1");

open(path + commonfilename + "c4");

run("Images to Stack", "name=Stack title=[] use");

run("PixFRET"); // please adjust this to your needs

}

setBatchMode(true);

n_timepoints = 999;

dir = "/path/to/your/images/";

for (i = 0; i < n_timepoints; i++)

pixfret(dir, "filename_t" + IJ.pad(i, 4));

setBatchMode(false);

希望有所帮助。

以上是 pixFRET - 运行插件的时间推移图像/ /循环? 的全部内容, 来源链接: utcz.com/qa/263984.html

回到顶部