2013-05-27 4 views
1

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

Краткое описание моей структуры данных: workfolder \ filename_t001c1 (канал 1 Изображение - донор в момент времени 001), filename_t001c2 (канал 2 Image - FRET в момент времени 001), ... t001c3 (может быть пренебрегают) ... t001c4 (Channel 4 Image - Acceptor в момент времени 001).

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

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

Благодаря Дэвид

ответ

1

Я не нашел способ напрямую включать параметры и команды из подключаемого модуля 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=[]"); 
} 

Спасибо за вашу помощь Jan. Если вы можете думать так, чтобы вызвать эти pixFRET команды напрямую, а не с помощью Ij_robot, пожалуйста, дайте мне знать.

0

Возьмите this tutorial из Fiji (is just ImageJ) в качестве отправной точки, и использовать записи макросов (Plugins> Macros> Record ...), чтобы получить команды необходимому.

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

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

Надежда, что помогает.

+0

Привет, спасибо за ваш ответ. Есть ли у вас какие-либо идеи, если можно управлять плагином pixFRET из этого макроса? Я уже пытался запустить pixFRET из макроса, записанного с помощью macrorecorder, но он останавливается с открытыми окнами pixFRET. Например, есть одна кнопка, которую нужно нажать «Вычислить FRET», а также выбрать кнопки фона 3, которые нужно нажать с предопределенным ROI: Reset/Get/Add. Теперь я попытаюсь использовать «IJ_Robot», но если есть альтернативный/простой способ сделать эту работу, сообщите мне об этом. Спасибо, Дэвид –