У меня есть 25K TIF-файлов (пожалуйста, не спрашивайте, почему), которые я хочу организовать в стопки на изображении J. В основном для каждой интересующей области (ROI) есть 50 изображений, которые разбиваются на 25 z-плоскостей длядва канала. Я хочу все в одном стеке. И я хотел бы выполнить пакетную обработку всей папки, не открывая 50 изображений по 500 раз за раз. Я приложил изображение того, как выглядят имена файлов:
Организация папки
r01c01f01p01-ch1.tif - первые 10 символов являются уникальным идентификатором для каждой области интереса, затем номер плоскости (p01), затем канал - ch1 или ch2, затем расширение файла
Вот что у меня есть (что я собрал вместе на основе других макросов, так что это может не иметь смысла ...). использует язык макросов ImageJ.
//Processing loop to process each file in the folder.
for (i=0; i<list.length; i++) {
showProgress(i+1, list.length);
if (endsWith(list[i], ".tif")) { // skip the subfolder (I create a subfolder earlier in the macros)
print("-- Processing file: " + list[i] + " --");
open(dir+list[i]);
imageTitle= getTitle();
newTitle = substring(imageTitle, 0, lengthOf(imageTitle)-10); // r01c01f01p, cutting off plane number and then the rest to just get the ROI ID
//This is where I'm stuck:
// find all files containing newTitle and open them (which would be 50 at a time), then run the following macros on them
run("Images to Stack", "name=Ch1 title=[] use");
run("Duplicate...", "title=Ch2 duplicate");
selectWindow("Ch1");
run("Slice Remover", "first=1 last=50 increment=2");
selectWindow("Ch2");
run("Slice Remover", "first=2 last=50 increment=2");
run("Merge Channels...", "c1=Ch1 c2=Ch2 create");
saveAs("tiff", dirNew + newTitle + "_Stack.tif");
//Close(All)?
}
}
print("-- Done --");
showStatus("Finished.");
setBatchMode(false); // Exit batch mode
run("Collect Garbage");
Спасибо!