2017-02-22 11 views
0

Я пытаюсь использовать плагин ITCN для подсчета количества нукли в моем изображении с помощью javascripts, поддерживаемых средой ImageJ. Мой старый (ImageJ 1.49xx) javascript больше не работает, потому что все было изменено на компилятор Java 8 для ImageJ1.51xx. С помощью этого поста (http://forum.imagej.net/t/itcn-threshold-option-missing/1095/3) и этого (ImageJ jar file plugin shortcut creation - More help needed) я добился определенного прогресса.Невозможно использовать ITCN_Runner через javascript (Возможная ошибка в плагине)

Вот простой пример кода: -

//importing the requisite packages 
    importClass(Packages.ij.ImagePlus); 
    importClass(Packages.ITCN_Runner); 

    var filename = 'Path/to/8bit/single/channel/.tiff/file' 

    //make a ImagePlus object 

    var imp = new ImagePlus(fileName);        

    //Call ITCN_runner to generate results window 

    var runner = new ITCN_Runner(imp, 
    24, /* width*/ 
    12, /* minimum distance */ 
    0.5, /* threshold */ 
    false, /* detect dark peaks */ 
    null /* mask ImagePlus */) 

Когда я бегу выше сценарий, я бегу в следующее сообщение об ошибке: -

TypeError: new cannot be used with non-public java type ITCN_Runner. 
     at jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57) 
    Followed by several lines... 

Мое предположение, что это вызвано тем, что ITCN_Runner.class в ITCN_.jar не указывает класс ITCN_Runner как общедоступный. Это было хорошо в Java6, но больше не разрешено в Java 8.

Должен ли ITCN_Runner.class объявлен публичным источником-источником? Или я ошибаюсь здесь. Как я могу исправить эту проблему.

Любые предложения или обходные пути приветствуются.

ответ

0

Я отправляю очень не идеальное обходное решение, которое я придумал для вышеупомянутой проблемы. Таким образом, вместо того, чтобы создание ITCN_Runner, я снял следующие строки

var runner = new ITCN_Runner(imp, 
24, /* width*/ 
12, /* minimum distance */ 
0.5, /* threshold */ 
false, /* detect dark peaks */ 
null /* mask ImagePlus */) 

и заменить их с помощью команды запуска, чтобы запустить ITCN плагин сам

IJ.run("ITCN ", "") 

    new WaitForUserDialog("Get the results from ITCN", 
     "Please press OK when done with ITCN.").show(); 

WaitForUserDialog ждет меня, чтобы вручную генерировать результаты окно, выйти из плагина и захватить результаты для написания в csv следующим образом.

//////Time Delay function////// 
    var tp = IJ.getTextPanel(); 
     while (tp.getLineCount() < 2) { 
      IJ.wait(500); 
      } 
////Parsing Results/// 
    //var fileName = tp.getLine(0); 
    var DAPI = tp.getLine(1); 
    tp.clear(); 

Любые предложения по улучшению этого будут большой помощью.

Thanks lune3141