pixFRET — запуск плагина для таймлапс-изображений // зацикливание?

Я только недавно начал работать с ImageJ (и, следовательно, у меня нет большого опыта в программировании макросов), чтобы анализировать мои микроскопические изображения. Для создания попиксельных изображений FRET, скорректированных на спектральное просачивание, я использую подключаемый модуль: pixFRET. Для работы этого плагина требуется стек из 3 образов: FRET, Donor, Acceptor. Пока приходится открывать каждую картинку самому, а это ОЧЕНЬ неудобно для больших временных стеков (>1000 изображений). Я ищу способ зациклить плагин или создать какой-то макрос для этого.

Краткое описание моей структуры данных: workfolder\filename_t001c1 (изображение канала 1 — донор в момент времени 001), имя_файла_t001c2 (изображение канала 2 — FRET в момент времени 001), ...t001c3 (можно пренебречь) ...t001c4 ( Изображение канала 4 — акцептор в момент времени 001).

Мне пришлось бы создавать стек C2/C1/C4 в каждый момент времени, который автоматически анализируется pixFRET (с заданными параметрами), и результат должен быть сохранен в выходной папке.

Я благодарен за каждое предложение, так как моей самой большой проблемой является зацикливание всей этой генерации стека/анализа pixFRET (сейчас могу только сделать это руководство).

Спасибо, Дэвид.


person David G    schedule 27.05.2013    source источник


Ответы (2)


Я не нашел способа напрямую включить параметры и команды из плагина 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, дайте мне знать.

person David G    schedule 07.06.2013

Возьмите это руководство с Fiji (это просто ImageJ) в качестве отправной точки и используйте средство записи макросов (Плагины > Макросы > Запись...), чтобы получить необходимые команды.

Код вашего макроса может выглядеть примерно так:

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);

Надеюсь, это поможет.

person Jan Eglinger    schedule 27.05.2013
comment
Привет, спасибо за ваш ответ. У вас есть идеи, можно ли управлять плагином pixFRET из этого макроса? Я уже пытался запустить pixFRET из макроса, записанного с помощью макрорекордера, но он останавливается с открытыми окнами pixFRET. Например, нужно нажать одну кнопку, которая называется Compute FRET, а также выбрать фоновые 3 кнопки, которые нужно нажать с предопределенной областью интереса: Reset/Get/Add. Теперь я попытаюсь использовать IJ_Robot, но если есть какой-либо альтернативный/более простой способ сделать это, дайте мне знать. Спасибо, Дэвид. - person David G; 04.06.2013