#@ File (label="Ordner Bilder:", style="directory", description="Wähle den Ordner, der die zu analysierenden Bilder enthält.", value="C:/users/labor") dirFiles #@ File (label="Ordner Ergebnisse:", style="directory", description="Wähle einen Ordner im dem die Ergebnisse gespeichert werden sollen.", value="C:/users/labor") dirResults #@ String (label="Name Ergebnisse", description="Name der Ergebnissdatei") result_name #@ String (choices={"AB count", "Intensity", "Orientation"}, style="listBox", description="") messmodus #@ String (label="Kanal Nuclei", choices={"blue", "green", "red"}, style="listBox", value="blue") channel_nuclei #@ String (label="Kanal Marker", choices={"blue", "green", "red"}, style="listBox", value="green") channel_marker //#@ String (visibility=MESSAGE, value="
                                   

Optionen AB-count

") docmsg #@ Integer (label="Nuclei min. Size (µm²):", value="20", description="Partikel, die kleiner als die angegebene Fläche sind, werden herausgefiltert.") nuclei_min_size #@ String (label="Beobachtungsmodus:", choices={"AN", "AUS"}, style="radioButtonHorizontal", value="AUS", description="Wenn der Beobachtungsmodus aktiviert wird, werden die einzelnen Bearbeitungsschritte zur Kontrolle angezeigt, die Bearbeitung ist langsamer.") batchmode_toggle //#@ Integer (label="AB min. Size:") ab_min_size //#@ Integer (label="AB max. Size:") ab_max_size //#@ Integer (label="Maxima Prominence >", style="slider", min=0, max=30, stepSize=1) prominence dirResults = replace(dirResults, "\\", "/"); dirFiles = replace(dirFiles, "\\", "/"); list = getFileList(dirFiles); run("Set Measurements...", "area mean standard modal min centroid center perimeter bounding fit shape feret's integrated median skewness kurtosis area_fraction stack limit display invert add nan redirect=None decimal=3"); if (messmodus == "AB count") { abcount(channel_nuclei, channel_marker, prominence, nuclei_min_size, ab_min_size, ab_max_size, dirFiles, result_name); } else if (messmodus == "Intensity") { intensity_over_nucleus(channel_nuclei, channel_marker, nuclei_min_size, dirFiles, result_name) ; } else if ( messmodus == "Orientation") { print("Orientation"); } function intensity_over_nucleus(channel_nuclei, channel_marker, nuclei_min_size, dirFiles, result_name) { data_nuclei = newArray(); data_intensities = newArray(); data_areas = newArray(); data_filenames = newArray(); setBatchMode(false); channel_to_close = select_unused_channel(channel_nuclei, channel_marker); for (i=0; i Bild " + (i+1) + " von " + list.length + " wurde ausgewertet."); print("Ergebnisse: " + current_file + ", " + nucleus_number + ", " + getValue("Mean")); close("*"); // wait(5000); } close("*"); run("Clear Results"); Array.show("Results (indexes)", data_filenames, data_nuclei, data_intensities, data_areas); updateResults(); } function abcount(channelKerne, channelAB, promValue, nuclei_size, minsize, maxsize, file_directory, file_name) { data_nuclei = newArray(); data_antibodies = newArray(); data_filenames = newArray(); setBatchMode(false); channel_to_close = select_unused_channel(channel_nuclei, channel_marker); for (i=0; i Bild " + (i+1) + " von " + list.length + " wurde ausgewertet."); } close("*"); run("Clear Results"); Array.show("Results (row numbers)", data_filenames, data_nuclei, data_antibodies); updateResults(); // saveAs("results", dirResults + "/" + result_name + ".csv"); Table.save(dirResults + "/" + result_name + ".csv"); } function intensity () { } function minsizefilter(minimum_size) { roinumber = roiManager("count"); to_be_deleted = newArray(); for (j = 0; j < roinumber; j++) { roiManager("Select", j); getStatistics(area, mean, min, max, std, histogram); if (area <= minimum_size){ to_be_deleted = Array.concat(to_be_deleted, j); } } if (to_be_deleted.length > 0){ roiManager("Select", to_be_deleted); roiManager("Delete"); } } function select_unused_channel(ch1, ch2) { if ((ch1 == "blue" && ch2 == "blue") || (ch1 == "green" && ch2 == "green") || (ch1 == "red" && ch2 == "red") == 1) { exit("Der Kanal für Nuclei und Marker können nicht auf die gleiche Farbe eingestellt sein."); } else if ((ch1 == "blue" && ch2 == "green") || (ch1 == "green" && ch2 == "blue") == 1) { return "red"; } else if ((ch1 == "blue" && ch2 == "red") || (ch1 == "red" && ch2 == "blue") == 1) { return "green"; } else if ((ch1 == "red" && ch2 == "green") || (ch1 == "green" && ch2 == "red") == 1) { return "blue"; } } function Ilastik_Processing(IlastikDir, IlastikProject, IlastikInput, IlastikOutput) { print("Performing Ilastik antibody count..."); //Prepare text inputs for batch q ="\""; //inputI = replace(input, "\\", "/"); IlastikDir1 = replace(IlastikDir+"/ilastik.exe", "\\", "/"); // IlastikDir1 = q + IlastikDir1 + q; print(IlastikDir1); IlastikProject1 = replace(IlastikProject, "\\", "/"); // IlastikProject1 = q + IlastikProject1 + q; IlastikOutDir = IlastikOutput; IlastikOutDir = replace(IlastikOutDir, "\\", "/"); // IlastikOutDir = q + IlastikOutDir + "ilastik_temp_savefile.csv" + q; IlastikInput = IlastikInput; // IlastikInput = q + IlastikInput + q; ilcommand = IlastikDir1 +" --headless --project="+IlastikProject1+" --csv-export-file=" + IlastikOutDir + " " + IlastikInput; print(ilcommand); // Create Batch and run run("Text Window...", "name=Batch"); //print("[Batch]", "@echo off" + "\n"); print("[Batch]", ilcommand); run("Text...", "save=[C:/Users/labor/Documents/Ilastikrun.bat]"); selectWindow("Ilastikrun.bat"); run("Close"); runilastik = "C:/Users/labor/Documents/Ilastikrun.bat"; runilastik = replace(runilastik, "\\", "/"); // runilastik = q + runilastik + q; print(runilastik); waitForUser; exec(runilastik); //Cleanup File.delete("C:/Users/labor/Documents/Ilastikrun.bat"); print(""); file_contents = File.openAsString(IlastikOutDir); substr = split(file_contents, ","); ab_number = parseFloat(substr[1]); // // open(IlastikOutDir); // getResult("C2", 0); // ab_number = getResult("C2", 0); print("Die gemessene AB-Zahl ist: " + ab_number); return ab_number; }