Skip to content
Merged
12 changes: 12 additions & 0 deletions Legacy/bonej/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,18 @@
<version>${project.version}</version>
</dependency>

<dependency>
<groupId>org.bonej</groupId>
<artifactId>bonej-utilities</artifactId>
<version>${project.version}</version>
</dependency>

<dependency>
<groupId>org.bonej</groupId>
<artifactId>bonej-plugins</artifactId>
<version>${project.version}</version>
</dependency>

<!-- ImageJ dependencies -->
<dependency>
<groupId>net.imagej</groupId>
Expand Down
32 changes: 23 additions & 9 deletions Legacy/bonej/src/main/java/org/bonej/plugins/Connectivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,10 @@

import org.bonej.util.ImageCheck;
import org.bonej.util.Multithreader;
import org.bonej.util.ResultInserter;
import org.bonej.utilities.SharedTable;
import org.bonej.wrapperPlugins.BoneJCommand;
import org.scijava.command.Command;
import org.scijava.plugin.Plugin;

import ij.IJ;
import ij.ImagePlus;
Expand Down Expand Up @@ -98,7 +101,8 @@
* </p>
*
*/
public class Connectivity implements PlugIn {
@Plugin(type = Command.class, menuPath = "Plugins>BoneJ>Connectivity>Connectivity")
public class Connectivity extends BoneJCommand implements PlugIn {

private final static int[] EULER_LUT = fillEulerLUT();

Expand All @@ -109,8 +113,19 @@ public class Connectivity implements PlugIn {
private int height = 0;

/** working image depth */
private int depth = 0;
private int depth = 0;

/**
* Modern scijava Plugin entry point. Calls the Legacy {@link #run(String)} method
*/
@Override
public void run() {
run("");
}

/**
* Legacy ImageJ1 plugin
*/
@Override
public void run(final String arg) {
final ImagePlus imp = IJ.getImage();
Expand All @@ -132,12 +147,11 @@ public void run(final String arg) {
+ "particles or enclosed cavities.\n\n" + "Try running Purify prior to Connectivity.");
}

final ResultInserter ri = ResultInserter.getInstance();
ri.setResultInRow(imp, "Euler ch.", sumEuler);
ri.setResultInRow(imp, "Δ(χ)", deltaChi);
ri.setResultInRow(imp, "Connectivity", connectivity);
ri.setResultInRow(imp, "Conn.D (" + imp.getCalibration().getUnit() + "^-3)", connDensity);
ri.updateTable();
SharedTable.add(imp.getTitle(), "Euler ch.", sumEuler);
SharedTable.add(imp.getTitle(), "Δ(χ)", deltaChi);
SharedTable.add(imp.getTitle(), "Connectivity", connectivity);
SharedTable.add(imp.getTitle(), "Conn.D (" + imp.getCalibration().getUnit() + "^-3)", connDensity);
resultsTable = SharedTable.getTable();
return;
}

Expand Down
65 changes: 38 additions & 27 deletions Legacy/bonej/src/main/java/org/bonej/plugins/Moments.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,13 @@
import org.bonej.util.ImageCheck;
import org.bonej.util.MatrixUtils;
import org.bonej.util.Multithreader;
import org.bonej.util.ResultInserter;
import org.bonej.util.ThresholdGuesser;
import org.jogamp.vecmath.Color3f;
import org.jogamp.vecmath.Point3f;
import org.bonej.utilities.SharedTable;
import org.bonej.wrapperPlugins.BoneJCommand;
import org.scijava.command.Command;
import org.scijava.plugin.Plugin;

import Jama.EigenvalueDecomposition;
import Jama.Matrix;
Expand All @@ -71,7 +74,8 @@
*
* @author Michael Doube
*/
public class Moments implements PlugIn, DialogListener {
@Plugin(type = Command.class, menuPath = "Plugins>BoneJ>Moments of Inertia")
public class Moments extends BoneJCommand implements PlugIn, DialogListener {

private boolean fieldUpdated;
private Calibration cal;
Expand Down Expand Up @@ -110,6 +114,14 @@ public boolean dialogItemChanged(final GenericDialog gd, final AWTEvent e) {
// conversion coefficient from mm^5 to kg.m² = 1.8*10^-12
// double cc = 1.8*Math.pow(10, -12);

/**
* Modern scijava Plugin entry point. Calls the Legacy {@link #run(String)} method
*/
@Override
public void run() {
run("");
}

@Override
public void run(final String arg) {
final ImagePlus imp = IJ.getImage();
Expand Down Expand Up @@ -187,33 +199,32 @@ public void run(final String arg) {
final double[] moments = (double[]) momentResults[1];

final String units = imp.getCalibration().getUnits();
final ResultInserter ri = ResultInserter.getInstance();
ri.setResultInRow(imp, "Xc (" + units + ")", centroid[0]);
ri.setResultInRow(imp, "Yc (" + units + ")", centroid[1]);
ri.setResultInRow(imp, "Zc (" + units + ")", centroid[2]);
ri.setResultInRow(imp, "Vol (" + units + "³)", moments[0]);
ri.setResultInRow(imp, "Mass (g)", moments[1]);
ri.setResultInRow(imp, "Icxx (kg.m²)", moments[2]);
ri.setResultInRow(imp, "Icyy (kg.m²)", moments[3]);
ri.setResultInRow(imp, "Iczz (kg.m²)", moments[4]);
ri.setResultInRow(imp, "Icxy (kg.m²)", moments[5]);
ri.setResultInRow(imp, "Icxz (kg.m²)", moments[6]);
ri.setResultInRow(imp, "Icyz (kg.m²)", moments[7]);
ri.setResultInRow(imp, "I1 (kg.m²)", E.getD().get(2, 2));
ri.setResultInRow(imp, "I2 (kg.m²)", E.getD().get(1, 1));
ri.setResultInRow(imp, "I3 (kg.m²)", E.getD().get(0, 0));
SharedTable.add(imp.getTitle(), "Xc (" + units + ")", centroid[0]);
SharedTable.add(imp.getTitle(), "Yc (" + units + ")", centroid[1]);
SharedTable.add(imp.getTitle(), "Zc (" + units + ")", centroid[2]);
SharedTable.add(imp.getTitle(), "Vol (" + units + "³)", moments[0]);
SharedTable.add(imp.getTitle(), "Mass (g)", moments[1]);
SharedTable.add(imp.getTitle(), "Icxx (kg.m²)", moments[2]);
SharedTable.add(imp.getTitle(), "Icyy (kg.m²)", moments[3]);
SharedTable.add(imp.getTitle(), "Iczz (kg.m²)", moments[4]);
SharedTable.add(imp.getTitle(), "Icxy (kg.m²)", moments[5]);
SharedTable.add(imp.getTitle(), "Icxz (kg.m²)", moments[6]);
SharedTable.add(imp.getTitle(), "Icyz (kg.m²)", moments[7]);
SharedTable.add(imp.getTitle(), "I1 (kg.m²)", E.getD().get(2, 2));
SharedTable.add(imp.getTitle(), "I2 (kg.m²)", E.getD().get(1, 1));
SharedTable.add(imp.getTitle(), "I3 (kg.m²)", E.getD().get(0, 0));
if (doVerboseUnitVectors) {
ri.setResultInRow(imp, "vX0", E.getV().get(0, 0));
ri.setResultInRow(imp, "vY0", E.getV().get(1, 0));
ri.setResultInRow(imp, "vZ0", E.getV().get(2, 0));
ri.setResultInRow(imp, "vX1", E.getV().get(0, 1));
ri.setResultInRow(imp, "vY1", E.getV().get(1, 1));
ri.setResultInRow(imp, "vZ1", E.getV().get(2, 1));
ri.setResultInRow(imp, "vX2", E.getV().get(0, 2));
ri.setResultInRow(imp, "vY2", E.getV().get(1, 2));
ri.setResultInRow(imp, "vZ2", E.getV().get(2, 2));
SharedTable.add(imp.getTitle(), "vX0", E.getV().get(0, 0));
SharedTable.add(imp.getTitle(), "vY0", E.getV().get(1, 0));
SharedTable.add(imp.getTitle(), "vZ0", E.getV().get(2, 0));
SharedTable.add(imp.getTitle(), "vX1", E.getV().get(0, 1));
SharedTable.add(imp.getTitle(), "vY1", E.getV().get(1, 1));
SharedTable.add(imp.getTitle(), "vZ1", E.getV().get(2, 1));
SharedTable.add(imp.getTitle(), "vX2", E.getV().get(0, 2));
SharedTable.add(imp.getTitle(), "vY2", E.getV().get(1, 2));
SharedTable.add(imp.getTitle(), "vZ2", E.getV().get(2, 2));
}
ri.updateTable();
resultsTable = SharedTable.getTable();

if (doAlign) alignToPrincipalAxes(imp, E.getV(), centroid, startSlice,
endSlice, min, max, doAxes).show();
Expand Down
128 changes: 68 additions & 60 deletions Legacy/bonej/src/main/java/org/bonej/plugins/ParticleCounter.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,11 @@
import org.bonej.menuWrappers.ThicknessHelper;
import org.bonej.util.DialogModifier;
import org.bonej.util.ImageCheck;
import org.bonej.utilities.SharedTable;
import org.bonej.wrapperPlugins.BoneJCommand;
import org.jogamp.vecmath.Point3f;
import org.scijava.command.Command;
import org.scijava.plugin.Plugin;

import Jama.EigenvalueDecomposition;

Expand All @@ -49,7 +53,6 @@
import ij.gui.DialogListener;
import ij.gui.GenericDialog;
import ij.measure.Calibration;
import ij.measure.ResultsTable;
import ij.plugin.PlugIn;
import ij3d.Image3DUniverse;
import sc.fiji.analyzeSkeleton.SkeletonResult;
Expand All @@ -64,9 +67,9 @@
*
* @author Michael Doube
*/
public class ParticleCounter implements PlugIn, DialogListener {
@Plugin(type = Command.class, menuPath = "Plugins>BoneJ>Analyze>Particle Analyser")
public class ParticleCounter extends BoneJCommand implements PlugIn, DialogListener {


/* (non-Javadoc)
* @see ij.gui.DialogListener#dialogItemChanged(ij.gui.GenericDialog, java.awt.AWTEvent)
*/
Expand Down Expand Up @@ -96,6 +99,14 @@ public boolean dialogItemChanged(final GenericDialog gd, final AWTEvent e) {
return true;
}

/**
* Modern scijava Plugin entry point. Calls the Legacy {@link #run(String)} method
*/
@Override
public void run() {
run("");
}

/* (non-Javadoc)
* @see ij.plugin.PlugIn#run(java.lang.String)
*/
Expand Down Expand Up @@ -292,54 +303,52 @@ public void run(final String arg) {
}

// Show numerical results
final ResultsTable rt = new ResultsTable();
SharedTable.reset();
for (int i = 1; i < volumes.length; i++) {
if (volumes[i] > 0) {
rt.incrementCounter();
rt.addLabel(imp.getTitle());
rt.addValue("ID", i);
rt.addValue("Vol. (" + units + "³)", volumes[i]);
rt.addValue("x Cent (" + units + ")", centroids[i][0]);
rt.addValue("y Cent (" + units + ")", centroids[i][1]);
rt.addValue("z Cent (" + units + ")", centroids[i][2]);
SharedTable.add(imp.getTitle(),"ID", i);
SharedTable.add(imp.getTitle(),"Vol. (" + units + "³)", volumes[i]);
SharedTable.add(imp.getTitle(),"x Cent (" + units + ")", centroids[i][0]);
SharedTable.add(imp.getTitle(),"y Cent (" + units + ")", centroids[i][1]);
SharedTable.add(imp.getTitle(),"z Cent (" + units + ")", centroids[i][2]);
if (doAlignedBoxes) {
rt.addValue("Box x (" + units + ")", alignedBoxes[i][0]);
rt.addValue("Box y (" + units + ")", alignedBoxes[i][1]);
rt.addValue("Box z (" + units + ")", alignedBoxes[i][2]);
rt.addValue("Box l0 (" + units + ")", alignedBoxes[i][3]);
rt.addValue("Box l1 (" + units + ")", alignedBoxes[i][4]);
rt.addValue("Box l2 (" + units + ")", alignedBoxes[i][5]);
SharedTable.add(imp.getTitle(),"Box x (" + units + ")", alignedBoxes[i][0]);
SharedTable.add(imp.getTitle(),"Box y (" + units + ")", alignedBoxes[i][1]);
SharedTable.add(imp.getTitle(),"Box z (" + units + ")", alignedBoxes[i][2]);
SharedTable.add(imp.getTitle(),"Box l0 (" + units + ")", alignedBoxes[i][3]);
SharedTable.add(imp.getTitle(),"Box l1 (" + units + ")", alignedBoxes[i][4]);
SharedTable.add(imp.getTitle(),"Box l2 (" + units + ")", alignedBoxes[i][5]);
}
if (doSurfaceArea) {
rt.addValue("SA (" + units + "²)", surfaceAreas[i]);
SharedTable.add(imp.getTitle(),"SA (" + units + "²)", surfaceAreas[i]);
}
if (doFeret) {
rt.addValue("Feret (" + units + ")", ferets[i][0]);
rt.addValue("FeretAx (" + units + ")", ferets[i][1]);
rt.addValue("FeretAy (" + units + ")", ferets[i][2]);
rt.addValue("FeretAz (" + units + ")", ferets[i][3]);
rt.addValue("FeretBx (" + units + ")", ferets[i][4]);
rt.addValue("FeretBy (" + units + ")", ferets[i][5]);
rt.addValue("FeretBz (" + units + ")", ferets[i][6]);
SharedTable.add(imp.getTitle(),"Feret (" + units + ")", ferets[i][0]);
SharedTable.add(imp.getTitle(),"FeretAx (" + units + ")", ferets[i][1]);
SharedTable.add(imp.getTitle(),"FeretAy (" + units + ")", ferets[i][2]);
SharedTable.add(imp.getTitle(),"FeretAz (" + units + ")", ferets[i][3]);
SharedTable.add(imp.getTitle(),"FeretBx (" + units + ")", ferets[i][4]);
SharedTable.add(imp.getTitle(),"FeretBy (" + units + ")", ferets[i][5]);
SharedTable.add(imp.getTitle(),"FeretBz (" + units + ")", ferets[i][6]);
}
if (doSurfaceVolume) {
rt.addValue("Encl. Vol. (" + units + "³)", surfaceVolumes[i]);
SharedTable.add(imp.getTitle(),"Encl. Vol. (" + units + "³)", surfaceVolumes[i]);
}
if (doMoments) {
final EigenvalueDecomposition E = eigens[i];
rt.addValue("I1", E.getD().get(2, 2));
rt.addValue("I2", E.getD().get(1, 1));
rt.addValue("I3", E.getD().get(0, 0));
rt.addValue("vX", E.getV().get(0, 0));
rt.addValue("vY", E.getV().get(1, 0));
rt.addValue("vZ", E.getV().get(2, 0));
SharedTable.add(imp.getTitle(),"I1", E.getD().get(2, 2));
SharedTable.add(imp.getTitle(),"I2", E.getD().get(1, 1));
SharedTable.add(imp.getTitle(),"I3", E.getD().get(0, 0));
SharedTable.add(imp.getTitle(),"vX", E.getV().get(0, 0));
SharedTable.add(imp.getTitle(),"vY", E.getV().get(1, 0));
SharedTable.add(imp.getTitle(),"vZ", E.getV().get(2, 0));
if (doVerboseUnitVectors) {
rt.addValue("vX1", E.getV().get(0, 1));
rt.addValue("vY1", E.getV().get(1, 1));
rt.addValue("vZ1", E.getV().get(2, 1));
rt.addValue("vX2", E.getV().get(0, 2));
rt.addValue("vY2", E.getV().get(1, 2));
rt.addValue("vZ2", E.getV().get(2, 2));
SharedTable.add(imp.getTitle(),"vX1", E.getV().get(0, 1));
SharedTable.add(imp.getTitle(),"vY1", E.getV().get(1, 1));
SharedTable.add(imp.getTitle(),"vZ1", E.getV().get(2, 1));
SharedTable.add(imp.getTitle(),"vX2", E.getV().get(0, 2));
SharedTable.add(imp.getTitle(),"vY2", E.getV().get(1, 2));
SharedTable.add(imp.getTitle(),"vZ2", E.getV().get(2, 2));
}
}
if (doSkeletons) {
Expand All @@ -353,18 +362,18 @@ public void run(final String arg) {
branchesLength = skeletonResults[i].getAverageBranchLength()[0]
* nBranches;
}
rt.addValue("n Branches", nBranches);
rt.addValue("Branches length ("+units+")", branchesLength);
SharedTable.add(imp.getTitle(),"n Branches", nBranches);
SharedTable.add(imp.getTitle(),"Branches length ("+units+")", branchesLength);
}
if (doEulerCharacters) {
rt.addValue("Euler (χ)", eulerCharacters[i][0]);
rt.addValue("Holes (β1)", eulerCharacters[i][1]);
rt.addValue("Cavities (β2)", eulerCharacters[i][2]);
SharedTable.add(imp.getTitle(),"Euler (χ)", eulerCharacters[i][0]);
SharedTable.add(imp.getTitle(),"Holes (β1)", eulerCharacters[i][1]);
SharedTable.add(imp.getTitle(),"Cavities (β2)", eulerCharacters[i][2]);
}
if (doThickness) {
rt.addValue("Thickness (" + units + ")", thick[i][0]);
rt.addValue("SD Thickness (" + units + ")", thick[i][1]);
rt.addValue("Max Thickness (" + units + ")", thick[i][2]);
SharedTable.add(imp.getTitle(),"Thickness (" + units + ")", thick[i][0]);
SharedTable.add(imp.getTitle(),"SD Thickness (" + units + ")", thick[i][1]);
SharedTable.add(imp.getTitle(),"Max Thickness (" + units + ")", thick[i][2]);
}
if (doEllipsoids) {
final double[] rad;
Expand All @@ -380,25 +389,24 @@ public void run(final String arg) {
rad = (double[]) el[1];
unitV = (double[][]) el[2];
}
rt.addValue("Major radius (" + units + ")", rad[0]);
rt.addValue("Int. radius (" + units + ")", rad[1]);
rt.addValue("Minor radius (" + units + ")", rad[2]);
SharedTable.add(imp.getTitle(),"Major radius (" + units + ")", rad[0]);
SharedTable.add(imp.getTitle(),"Int. radius (" + units + ")", rad[1]);
SharedTable.add(imp.getTitle(),"Minor radius (" + units + ")", rad[2]);
if (doVerboseUnitVectors) {
rt.addValue("V00", unitV[0][0]);
rt.addValue("V01", unitV[0][1]);
rt.addValue("V02", unitV[0][2]);
rt.addValue("V10", unitV[1][0]);
rt.addValue("V11", unitV[1][1]);
rt.addValue("V12", unitV[1][2]);
rt.addValue("V20", unitV[2][0]);
rt.addValue("V21", unitV[2][1]);
rt.addValue("V22", unitV[2][2]);
SharedTable.add(imp.getTitle(),"V00", unitV[0][0]);
SharedTable.add(imp.getTitle(),"V01", unitV[0][1]);
SharedTable.add(imp.getTitle(),"V02", unitV[0][2]);
SharedTable.add(imp.getTitle(),"V10", unitV[1][0]);
SharedTable.add(imp.getTitle(),"V11", unitV[1][1]);
SharedTable.add(imp.getTitle(),"V12", unitV[1][2]);
SharedTable.add(imp.getTitle(),"V20", unitV[2][0]);
SharedTable.add(imp.getTitle(),"V21", unitV[2][1]);
SharedTable.add(imp.getTitle(),"V22", unitV[2][2]);
}
}
rt.updateResults();
}
}
rt.show("Results");
resultsTable = SharedTable.getTable();

// Show resulting image stacks
if (doParticleImage) {
Expand Down
Loading
Loading