Возникает IOException при сохранении стека 'Tiff' во вновь созданном каталоге - PullRequest
0 голосов
/ 26 апреля 2019

У меня проблема с моим макросом, написанным для открытия больших папок файлов .tif в виде одного стека (в пакетном режиме), а затем сохранения обработанного стека в новой целевой папке при сохранении некоторой информации об исходном каталоге. Это важно, поскольку исходный каталог отсортирован по дате и содержит некоторую информацию о файлах в каждой подпапке.

До сих пор я читал, что проблемы возникают, когда строковые переменные не в скобках, однако я не могу добавить скобки ни к одной из переменных, которые содержатся в выходном каталоге, так как это вызывает ошибку (ожидаемое число или числовое значение). оператор). Если я распечатываю все мои переменные в файле журнала, они все читаются правильно. Однако IOException выбрасывается каждый раз и всегда отображает усеченную версию выходного пути. Усечение может произойти в середине слов и цифр.


#@ File (label = "Input directory", style = "directory") input
#@ File (label = "Output directory", style = "directory") output
#@ String (label = "File suffix", value = ".tif") suffix

// See also Process_Folder.py for a version of this code
// in the Python scripting language.

processFolder(input);

// function to scan folders/subfolders/files to find files with correct suffix
function processFolder(input) {
    list = getFileList(input);
    list = Array.sort(list);
    for (i = 0; i < list.length; i++) {
        if(File.isDirectory(input + File.separator + list[i]))
            processFolder(input + File.separator + list[i]);
        if(endsWith(list[i], suffix))
            processFile(input, output, list[i]);
    }
}

function processFile(input, output, file) {
    setBatchMode(true); 
    // prevents image windows from opening while the script is running
    run("Bio-Formats Importer", "open=[" + input + "/" + file +"] autoscale color_mode=Default rois_import=[ROI manager] view=Hyperstack stack_order=XYCZT"); 
    // open image using Bio-Formats

    cutoffFolder = "Raw Data";
    //change "Raw Data" to be any folder you want (as long as it is listed in the image path). This will be the highest order folder in the new directory


    oldDir = getDirectory("image");
    baseDir=indexOf(oldDir, cutoffFolder);
    subDir = substring(oldDir, baseDir, lengthOf(oldDir));
    subDir = substring(subDir, indexOf(subDir, cutoffFolder) + lengthOf(cutoffFolder), lengthOf(subDir));
    newDir = output +  "\\Analyzed\\" + subDir;
    newDir = replace(newDir, "\\ ", "\\_");
    //above code creates a new directory in your target 'output' folder that will mimic the original directory, preserving organization. 


    //  print("Output= ", output);
    //  print("Original directory= ", oldDir);
    //  print("Cutoff index= ", baseDir);
    print("subDir= ", subDir);
    print("newDir= ", newDir); 


    File.makeDirectory(newDir);     
    filename = File.nameWithoutExtension();
    //print(filename);

    saveAs("Tiff", newDir + filename + ".tif"); 

}

По сути, я хочу, чтобы этот макрос открыл файл .env (метаданные), открыл гиперстек (работает), а затем сохранил гиперстек в новом месте, как указано в выходном каталоге, с дополнительными подпапками, определенными по исходному пути. Например, C: \ Users \ turnerbd_DR \ Raw_Data \ Datex \ ExperimentX \ File.env Будет сохранен в целевой директории на рабочем столе (Обработано) C: \ Users \ turnerbd_DR \ Desktop \ Обработанные \ Анализируются \ Datex \ ExperimentX File.tif

...