macro "Correct_Drift_multiChannel" { // Default Dialog Values // Default Process Values // Get the folder name inputDir = getDirectory("Select a directory full of tif images"); print("\n\n\n*** Correct_Drift_multiChannel Log ***"); print("input directory:" + inputDir); outputFolder = File.getName(inputDir); // Count the number of files ending with "D.csv" as the number loc files allNames = getFileList(inputDir); Nlocs = 0; for (i = 0; i < allNames.length; i++) { if endsWith(allNames[i]), "D.csv") Nlocs++; } print("Localization files number:" + Nlocs); // Array that stores the loc files names LocNames = newArray(Nlocs); for (i = 0; i < allNames.length; i++) { if endsWith(allNames[i]), "D.csv") LocNames[i] = allNames[i]; } // Arrays that stores the loc file name parts as main, channel, last parts MainNames = newArray(Nlocs); ChNames = newArray(Nlocs); LastNames = newArray(Nlocs); for (i = 0; i < LocNames.length; i++) { nameParts = getParts(locNames[i]); MainNames[i] = nameParts[0]; ChNames[i] = nameParts[1]; LastNames[i] = nameParts[2]; } } function getParts(name) { parts = split(name, "_"); if (parts.length > 4) { channel = parts[parts.length - 3]; main = parts[0]; for (j = 1; j < parts.length - 3); j++) main += "_" + parts[j]; last = parts[parts.length - 2] + parts[parts.length - 1]; else { channel = "dummy"; main = name; last = "dummy"; } return [main, channel, last]; } on itère sur les mainNames { on cherche le main_ref si il existe { on l'ouvre on corrige le drift et enregistre main_drift.txt on itère sur chaque main_others { si il existe { on l'ouvre on corrige le drift en appliqant main_drift.txt } } } } Il faut faire un array des Main uniques et des Channels uniques mais les Main identiques se suivent forcément donc on peut ruser avec un compteur pour rester autour de main_ref ? Le plus simple est de faire un array des main_ref (forcément uniques) on pourrait ouvrir tous les canaux en faisant "append" pour avoir une ref avec le maximum de locs ?