ImageJ/Fiji: итерация и печать в таблице результатов

У меня проблема с моим плагином Jython-Fiji:

IJ.run("Set Measurements...", "area centroid perimeter shape feret's area_fraction     redirect=None decimal=6")
IJ.run("Analyze Particles...")
rt = ResultsTable.getResultsTable()

for roi in RoiManager.getInstance().getRoisAsArray():
  a = rt.getValue("Feret", row)
  b = rt.getValue("MinFeret", row)
  nu= 1
  L = 1
  p = 1
  row = row + 1
  s = (math.pi/4) * (1/(nu*L)) * math.pow(a, 3) * math.pow(b, 3) / (math.pow(a, 2) + math.pow(a, 2))*p
  rt.addValue("S", s)
rt.show("Results") 

Обычно это должно добавить новый столбец (с именем S) в мое мнение со значениями s. К сожалению, в столбце отображается только последнее значение s, а все остальные строки этого столбца заполнены 0. Я определенно что-то упустил, но пока не знаю что. Заранее спасибо!


person Andreas R    schedule 07.10.2013    source источник


Ответы (1)


Чтобы заставить ваш код работать, мне пришлось добавить import math и row=0 в начале.

Затем я заменил вызов функции ResultsTable.addValue() на ResultsTable.setValue() с добавлением параметра текущей строки. См. документацию по API. подробности.

import math
IJ.run("Set Measurements...", "area centroid perimeter shape feret's area_fraction     redirect=None decimal=6")
IJ.run("Analyze Particles...")
rt = ResultsTable.getResultsTable()
row=0
for roi in RoiManager.getInstance().getRoisAsArray():
  a = rt.getValue("Feret", row)
  b = rt.getValue("MinFeret", row)
  nu= 1
  L = 1
  p = 1
  s = (math.pi/4) * (1/(nu*L)) * math.pow(a, 3) * math.pow(b, 3) / (math.pow(a, 2) + math.pow(a, 2))*p
  rt.setValue("S", row, s)
  row = row + 1
rt.show("Results")

Надеюсь, это поможет.

person Jan Eglinger    schedule 07.10.2013
comment
Вот и все! Большое спасибо. - person Andreas R; 07.10.2013