Curtis Rueden,
UW-Madison LOCI
Tweets to #imagej2015
A colleague told me once:
It's not the code that matters—it's the community.
But you can't build a house with your bare hands.
1997 | ||
2007 | ||
2009 | ||
2011 |
2011 | Update sites |
2012 | First ImageJ2 beta version |
2013 | Personal update sites |
2014 | Fiji Is Just ImageJ2 |
ImgLib2 comes out of beta | |
Fiji builds become reproducible | |
2015 | Several major goals |
DESIGN | COLLABORATE | BROADEN | MAINTAIN | UNIFY | LEAD
DESIGN | COLLABORATE | BROADEN | MAINTAIN | UNIFY | LEAD
Create the next version of ImageJ, based on the needs of the community
DESIGN | COLLABORATE | BROADEN | MAINTAIN | UNIFY | LEAD
Create the next version of ImageJ, based on the needs of the community
/** Loads and displays a dataset using the ImageJ API. */
public void loadAndDisplayDataset(final File file) {
// create the ImageJ application context with all available services
final ImageJ ij = new ImageJ();
// load the dataset
final Dataset dataset = ij.scifio().datasetIO().open(file.getAbsolutePath());
// display the dataset
ij.ui().show(dataset);
}
DESIGN | COLLABORATE | BROADEN | MAINTAIN | UNIFY | LEAD
Create the next version of ImageJ, based on the needs of the community
Image-specific components
More general than images
DESIGN | COLLABORATE | BROADEN | MAINTAIN | UNIFY | LEAD
Collaborate with others whenever beneficial
Kevin Eliceiri |
Jason Swedlow |
Pavel Tomancak |
Anne Carpenter |
Michael Berthold |
Christian Dietz |
Mark Hiner |
Lee Kamentsky |
Brian Northan |
Tobias Pietzsch |
Stephan Preibisch |
Curtis Rueden |
Stephan Saalfeld |
Johannes Schindelin |
And everyone supporting open science + open software!
DESIGN | COLLABORATE | BROADEN | MAINTAIN | UNIFY | LEAD
Collaborate with others whenever beneficial
Work together, reuse code and synergize
DESIGN | COLLABORATE | BROADEN | MAINTAIN | UNIFY | LEAD
Collaborate with others whenever beneficial
SciJava Modules: parameterized commands and scripts
@Parameter(label="Input image")
private ImagePlus original;
@Parameter(label="Sigma")
private double sigma = 1.0;
@Parameter(label="Use calibration")
private boolean useCalibration;
@Parameter(type=ItemIO.OUTPUT, label="Output image")
private ImagePlus result;
DESIGN | COLLABORATE | BROADEN | MAINTAIN | UNIFY | LEAD
Make ImageJ useful to a broad community
DESIGN | COLLABORATE | BROADEN | MAINTAIN | UNIFY | LEAD
Make ImageJ useful to a broad community
DESIGN | COLLABORATE | BROADEN | MAINTAIN | UNIFY | LEAD
Make ImageJ useful to a broad community
# @OpService ops
ops.help("math.add")
(ArrayImg image) =
net.imagej.ops.math.add.AddConstantToArrayDoubleImageP(
ArrayImg image,
double value)
(ArrayImg image) =
net.imagej.ops.math.add.AddConstantToArrayByteImageP(
ArrayImg image,
byte value)
(ArrayImg image) =
net.imagej.ops.math.add.AddConstantToArrayDoubleImage(
ArrayImg image,
double value)
(ArrayImg image) =
net.imagej.ops.math.add.AddConstantToArrayByteImage(
ArrayImg image,
byte value)
(Img out?) =
net.imagej.ops.math.add.AddIterableIntervalToImg(
Img out?,
Img in,
IterableInterval ii)
(int result) =
net.imagej.ops.math.PrimitiveMath$IntegerAdd(
int a,
int b)
(long result) =
net.imagej.ops.math.PrimitiveMath$LongAdd(
long a,
long b)
(float result) =
net.imagej.ops.math.PrimitiveMath$FloatAdd(
float a,
float b)
(double result) =
net.imagej.ops.math.PrimitiveMath$DoubleAdd(
double a,
double b)
(IterableRealInterval image) =
net.imagej.ops.math.add.AddConstantToImageInPlace(
IterableRealInterval image,
NumericType value)
(IterableInterval a) =
net.imagej.ops.math.add.AddRandomAccessibleIntervalToIterableInterval(
IterableInterval a,
RandomAccessibleInterval b)
(PlanarImg image) =
net.imagej.ops.math.add.AddConstantToPlanarDoubleImage(
PlanarImg image,
double value)
(RealType out) =
net.imagej.ops.math.RealMath$Add(
RealType out,
RealType in,
double constant)
(RealType out?) =
net.imagej.ops.math.RealBinaryMath$Add(
RealType out?,
RealType in,
RealType b)
(NumericType out?) =
net.imagej.ops.math.add.AddConstantToNumericType(
NumericType out?,
NumericType in,
NumericType value)
(RandomAccessibleInterval out) =
net.imagej.ops.math.add.AddConstantToImageFunctional(
RandomAccessibleInterval out,
IterableInterval in,
NumericType value)
DESIGN | COLLABORATE | BROADEN | MAINTAIN | UNIFY | LEAD
Maintain backwards compatibility with ImageJ1
DESIGN | COLLABORATE | BROADEN | MAINTAIN | UNIFY | LEAD
Maintain backwards compatibility with ImageJ1
LegacyUI
= ImageJ 1.x as a pluginDESIGN | COLLABORATE | BROADEN | MAINTAIN | UNIFY | LEAD
Maintain backwards compatibility with ImageJ1
DESIGN | COLLABORATE | BROADEN | MAINTAIN | UNIFY | LEAD
Provide central online resources for ImageJ
DESIGN | COLLABORATE | BROADEN | MAINTAIN | UNIFY | LEAD
Provide central online resources for ImageJ
imagej.net | primary portal |
mirror.imagej.net | ImageJ 1.x website |
wiki.imagej.net | ImageJ documentation |
search.imagej.net | towards a unified search |
sites.imagej.net | personal update sites |
DESIGN | COLLABORATE | BROADEN | MAINTAIN | UNIFY | LEAD
Provide central online resources for ImageJ
javadoc.imagej.net | developer documentation |
status.imagej.net | tracking releases |
maven.imagej.net | release binaries |
jenkins.imagej.net | continuous integration |
DESIGN | COLLABORATE | BROADEN | MAINTAIN | UNIFY | LEAD
Lead ImageJ development with a clear vision
DESIGN | COLLABORATE | BROADEN | MAINTAIN | UNIFY | LEAD
Lead ImageJ development with a clear vision
DESIGN | COLLABORATE | BROADEN | MAINTAIN | UNIFY | LEAD
Lead ImageJ development with a clear vision