Algorithm Document FRAP Fiji ImageJ ImageJ Plugin ImageJ Plugin 3Dviewer Imaris Java Javascript R added 201904 Freiburg bias blog dokuwiki fiji google imagej java jpblog libraries matlab meetings neubias news papers python references software webadmin




CMCI weblog

Server moved

The web server hosting this wiki has moved from EMBL to InMotion. The move was rather straight forward, but as biii.info is in the subdomain, htaccess file was tweaked around to enable biii.info to stay as it is while moving only the wiki to be redirected from cmci.embl.de to cmci.info.

Anycase, InMotion seems to be fast enough for rendering (even though it's in US).

Nature Physics Sept. 2013 Cover Page

http://www.nature.com/nphys/journal/v9/n9/full/nphys2715.html

The ImageJ plugin "Temporal-Color Code" was used for the analysis of the contraction of actomyosin gel and now in the cover page of Nature Physics, September 2013 issue. D. L. Taylor's “Solation-Contraction Coupling” hypothesis now on the move.

http://www.nature.com/nphys/journal/v9/n9/full/nphys2715.html

Thanks to José Alvarado for his kind acknowledgement and a big applause for his successful publication!

To be in R programming course

I do write some scripts in R but not really serious programming. As I am interested in advanced use of R, I will be in the following course organized by Wolfgang Huber.

http://www-huber.embl.de/courses/2013-advR/

The course seems to match with my stage, as it explains

This course is designed for users who have experience with writing R scripts, and who now want to advance one step further, into producing more durable and robust software projects and code that is usable by others.

As I always have had a plan to migrate FRAPcalc program from IgorPro to R and also add some more functionalities, this course should be the one I should attend… I thank Wolfgang for his initiative in making this course available. Besides, I am happy to see another EMBL centre being active!

BIAS 2013 wiki page

There will be “EMBL Master course on BioImage Data Analysis” in May, and I am preparing for this course with Christoph Moehl (Bonn) and Sebastien Tosi (Barcelona). For the course we want to be interactive so we now have a wiki for the course:

http://cmci.embl.de/shared/bias2013

We abbreviate the course title “BIAS 2013”. Registration deadline is in February, and we will be waiting for many applications!

ImgLib2, first test

I pretty much enjoyed ImageJ User and Developer conference 2012 in Luxemburg. Interesting people from different areas in science, very exciting to see how people are doing image processing and analysis. Some of live notes could be found in my time line. One of the great contribution for the third day was Bene Schmidt's work intseg_3D, combining user clicking and active contour fitting in 3D.

One of the core topic there was ImgLib2, the generic image typ behind ImageJ2. After coming back home, I tested ImgLib2 with the Jython code below.

Results were: Started testImgLib2.py at Sun Oct 28 16:41:57 CET 2012

  • ImgLib2 cursor 333 millisec
  • ImgLib2 for : 138 millisec
  • ImagePlus 152 millisec
  • ImageProcessor 114 millisec
  • Pixel Array 59 millisec

for loop using Img iterator is a bit faster than going through ImagePlus using classic nested for-loop. Even with the classic nested for-loop, using ImageProcessor was a bit faster than Img. The fastest is of course accessing pixels via pixel array. I only did this via ImagePlus, but there should be also some methods to extract an array from Img, which I did not test.

Addendum: See also proper benchmark in the following link in ImageJ2 site:

http://developer.imagej.net/imglib-benchmarks

Thanks to Albert Cardona for commenting on this.

# first trial with ImageLib2
# iterations

from net.imglib2.img import ImagePlusAdapter

imp = IJ.openImage("http://imagej.nih.gov/ij/images/blobs.gif")
img = ImagePlusAdapter.wrapReal(imp)

# accessing via ImagePlus
t3 = System.currentTimeMillis()
for i in range(imp.getHeight()):
	for j in range(imp.getWidth()):
#		print imp.getPixel(j, i)[0]
		imp.getPixel(j, i)[0]
				
t4 = System.currentTimeMillis()

# accessing via ImageProcessor
t5 = System.currentTimeMillis()
ip = imp.getProcessor()
for i in range(imp.getHeight()):
	for j in range(imp.getWidth()):
#		print ip.getPixelValue(j, i)
		ip.getPixelValue(j, i)
				
t6 = System.currentTimeMillis()

# ImgLib2 cursor
t1 = System.currentTimeMillis()
cursor = img.cursor()
cursor.fwd()
while cursor.hasNext():
	cursor.next()
#	print cursor.get()
	cursor.get()

t2 = System.currentTimeMillis()

t7 = System.currentTimeMillis()
for t in img:
#	print t.get()
	t.get()

t8 = System.currentTimeMillis()

# pixel array
t9 = System.currentTimeMillis()
pix = imp.getProcessor().getPixels()
for i in pix:
	i = i
#	print i

t10 = System.currentTimeMillis()	

print 'ImgLib2 cursor',(t2-t1), 'millisec'
print 'ImgLib2 for : ',(t8-t7), 'millisec'
print 'ImagePlus',(t4-t3), 'millisec'
print 'ImageProcessor',(t6-t5), 'millisec'
print 'Pixel Array',(t10-t9), 'millisec'
	

entry generator

Weblog Archive

Weblog 2006-2008