Giter Site home page Giter Site logo

imagej / imagej2 Goto Github PK

View Code? Open in Web Editor NEW
1.1K 92.0 328.0 109.48 MB

Open scientific N-dimensional image processing :microscope: :sparkler:

Home Page: https://imagej.net/

License: BSD 2-Clause "Simplified" License

Shell 24.17% Perl 12.60% Java 59.02% Batchfile 4.22%
image-processing computer-vision

imagej2's People

Contributors

afraser avatar bdezonia avatar bnanes avatar camlloyd avatar carandraug avatar ctrueden avatar dietzc avatar dscho avatar ehrenfeu avatar elevans avatar gitter-badger avatar grimler91 avatar grislis avatar hinerm avatar imagejan avatar jaywarrick avatar melissalinkert avatar ricklentz avatar stelfrich avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

imagej2's Issues

Display OME-XML and other metadata somehow

We want to provide a mechanism for displaying OME-XML and other metadata in a dedicated window. However, we should first consider the best way of doing so without limiting the generality of our approach. SCIFIO supports multiple data models (extensibly). At the lower level, SCIFIO simply attaches the relevant metadata object to the resultant SCIFIOCellImg which gets returned by the ImgOpener. We just need a way to expose this information via the UI somehow. Perhaps the best solution would be a PostprocessorPlugin that displays the OME-XML. Where such a postprocessor plugin would live, though, is not immediately obvious as of this writing.

Dataset should be an ImgPlus

The Dataset class is a special type of Img (actually, an ImgPlus). Ideally it would be an ImgPlus rather than just having one (inheritance, not just composition). The advantage would be that Datasets could then be used directly as method arguments that operate on Imgs and ImgPluses. This would be particularly useful for ImageJ OPS.

Maven fail to download artifact

I got some weird trouble building imagej with mvn.

[DEBUG] net.imagej:ij-updater-core:jar:2.0.0-SNAPSHOT (selected for null)
[DEBUG]   active project artifact:
    artifact = active project artifact:
    artifact = net.imagej:ij-core:jar:2.0.0-SNAPSHOT:compile;
    project: MavenProject: net.imagej:ij-core:2.0.0-SNAPSHOT @ /home/hadim/local/ij/imagej/core/core/pom.xml;
    project: MavenProject: net.imagej:ij-core:2.0.0-SNAPSHOT @ /home/hadim/local/ij/imagej/core/core/pom.xml (selected for compile)
[DEBUG]     org.scijava:scijava-common:jar:2.10.0:compile (selected for compile)
[DEBUG]       org.bushe:eventbus:jar:1.4:compile (selected for compile)
[DEBUG]       com.sun:tools:jar:1.4.2:system (selected for system)
[DEBUG]   junit:junit:jar:4.8.1:test (selected for test)
[DEBUG]   net.imagej:ij-core:jar:tests:2.0.0-SNAPSHOT:test (selected for test)
[DEBUG] Skipping disabled repository central
[DEBUG] ij-core: using locally installed snapshot
[DEBUG] Trying repository imagej.public
[DEBUG] Using Wagon implementation lightweight from default mapping for protocol http
[DEBUG] Checking for pre-existing User-Agent configuration.
[DEBUG] Adding User-Agent configuration.
[DEBUG] Connecting to repository: 'imagej.public' with url: 'http://maven.imagej.net/content/groups/public'.
Downloading: http://maven.imagej.net/content/groups/public/net/imagej/ij-core/2.0.0-SNAPSHOT/ij-core-2.0.0-SNAPSHOT-tests.jar
[DEBUG] Unable to locate resource in repository
org.apache.maven.wagon.ResourceDoesNotExistException: Unable to locate resource in repository
    at org.apache.maven.wagon.providers.http.LightweightHttpWagon.fillInputData(LightweightHttpWagon.java:139)
    at org.apache.maven.wagon.StreamWagon.getInputStream(StreamWagon.java:116)
    at org.apache.maven.wagon.StreamWagon.getIfNewer(StreamWagon.java:88)
    at org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:61)
    at org.apache.maven.artifact.manager.DefaultWagonManager.getRemoteFile(DefaultWagonManager.java:546)
    at org.apache.maven.artifact.manager.DefaultWagonManager.getArtifact(DefaultWagonManager.java:427)
    at org.apache.maven.artifact.manager.DefaultWagonManager.getArtifact(DefaultWagonManager.java:382)
    at org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:216)
    at org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:90)
    at org.apache.maven.artifact.resolver.DefaultArtifactResolver$ResolveArtifactTask.resolveArtifact(DefaultArtifactResolver.java:456)
    at org.apache.maven.artifact.resolver.DefaultArtifactResolver$ResolveArtifactTask.run(DefaultArtifactResolver.java:433)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
Caused by: java.io.FileNotFoundException: http://maven.imagej.net/content/groups/public/net/imagej/ij-core/2.0.0-SNAPSHOT/ij-core-2.0.0-SNAPSHOT-tests.jar
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1675)
    at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1673)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1671)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1244)
    at org.apache.maven.wagon.providers.http.LightweightHttpWagon.fillInputData(LightweightHttpWagon.java:122)
    ... 13 more
Caused by: java.io.FileNotFoundException: http://maven.imagej.net/content/groups/public/net/imagej/ij-core/2.0.0-SNAPSHOT/ij-core-2.0.0-SNAPSHOT-tests.jar
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1624)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468)
    at org.apache.maven.wagon.providers.http.LightweightHttpWagon.fillInputData(LightweightHttpWagon.java:115)
    ... 13 more
[DEBUG] Using Wagon implementation lightweight from default mapping for protocol http
[INFO] Unable to find resource 'net.imagej:ij-core:jar:tests:2.0.0-SNAPSHOT' in repository imagej.public (http://maven.imagej.net/content/groups/public)
[DEBUG] Skipping disabled repository central
[DEBUG] Unable to download the artifact from any repository

The weird thing is I have this problem at lab but not at home...running same OS (Linux).

Create a TaskService

We need a robust task service that can maintain metadata about running tasks. This will facilitate improved status reporting (e.g. by nesting progress bars, binning active tasks and providing time estimates at arbitrary granularities), which will be standardized by moving the responsibility to the framework instead of individual operations.

Commands: duck type memoryReport

We should have a framework in place so that commands can easily estimate the amount of ram they require.

The framework can then warn if there is insufficient memory to run a given command.

Error building ImageJ

I am not sure if I am on the right place to report this issue. If I am not, please redirect me.

So I am trying to build ImageJ from command line for the first time on latest Linux Mint 64bits following these instructions : http://developer.imagej.net/command-line

I got the following error (I didn't paste the full trace but if you need it, just ask):

Running imagej.legacy.LegacyHeadlessTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 1.17 sec - in imagej.legacy.LegacyHeadlessTest

Results :

Tests in error: 
  LegacyServiceTest.<clinit>:60 ExceptionInInitializer
  LegacyServiceTest.testContext » NoClassDefFound Could not initialize class ima...
  OverlayHarmonizerTest.<clinit>:79 NoClassDefFound Could not initialize class i...
  OverlayHarmonizerTest.testPolygonOverlay » NoClassDefFound Could not initializ...
  OverlayHarmonizerTest.testPolygonROI » NoClassDefFound Could not initialize cl...
  OverlayHarmonizerTest.testCompositeRoi » NoClassDefFound Could not initialize ...
  OverlayHarmonizerTest.testDonut » NoClassDefFound Could not initialize class i...
  OverlayHarmonizerTest.testCreateBinaryMaskOverlay » NoClassDefFound Could not ...
  OverlayHarmonizerTest.testCreateBinaryMaskROI » NoClassDefFound Could not init...
  OverlayHarmonizerTest.testUpdateDisplay » NoClassDefFound Could not initialize...
  OverlayHarmonizerTest.testUpdateImagePlus » NoClassDefFound Could not initiali...
  OverlayHarmonizerTest.testGetOverlays » NoClassDefFound Could not initialize c...
  LegacyImageMapTest.<clinit>:66 NoClassDefFound Could not initialize class imag...
  LegacyImageMapTest.testRegisterLegacyImage » NoClassDefFound Could not initial...
  LegacyImageMapTest.testReconciliation » NoClassDefFound Could not initialize c...
  ExtraPluginDirsTest.<clinit>:58 NoClassDefFound Could not initialize class ima...
  ExtraPluginDirsTest.findsExtraPluginDir » NoClassDefFound Could not initialize...

Tests run: 24, Failures: 0, Errors: 17, Skipped: 1

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] ImageJ Projects ................................... SUCCESS [1.550s]
[INFO] ImageJ POM: Core .................................. SUCCESS [0.016s]
[INFO] ImageJ Core Classes ............................... SUCCESS [2.678s]
[INFO] ImageJ Data Model ................................. SUCCESS [4.044s]
[INFO] ImageJ Core Options ............................... SUCCESS [0.038s]
[INFO] ImageJ Updater .................................... SUCCESS [3.407s]
[INFO] ImageJ User Interface Framework ................... SUCCESS [0.088s]
[INFO] ImageJ POM: Plugins ............................... SUCCESS [0.011s]
[INFO] ImageJ Plugins: Tools ............................. SUCCESS [0.063s]
[INFO] ImageJ Plugins: Commands .......................... SUCCESS [0.349s]
[INFO] ImageJ POM: User Interface ........................ SUCCESS [0.009s]
[INFO] ImageJ POM: AWT and Swing UIs ..................... SUCCESS [0.011s]
[INFO] ImageJ Utility Classes: AWT ....................... SUCCESS [0.031s]
[INFO] ImageJ Legacy Bridge .............................. FAILURE [2.564s]
[INFO] ImageJ POM: Scripting Languages ................... SKIPPED
[INFO] Beanshell Scripting For ImageJ .................... SKIPPED
[INFO] Clojure Scripting For ImageJ ...................... SKIPPED
[INFO] Minimal support for Maven projects ................ SKIPPED
[INFO] A script engine for Java .......................... SKIPPED
[INFO] JavaScript Scripting For ImageJ ................... SKIPPED
[INFO] JRuby Scripting For ImageJ ........................ SKIPPED
[INFO] Jython Scripting For ImageJ ....................... SKIPPED
[INFO] ImageJ Plugins: Platforms ......................... SKIPPED
[INFO] ImageJ Plugins: Text Formats ...................... SKIPPED
[INFO] ImageJ POM: Uploaders ............................. SKIPPED
[INFO] ImageJ Updater support for uploading via SSH/SFTP . SKIPPED
[INFO] ImageJ Updater support for uploading via WebDAV ... SKIPPED
[INFO] ImageJ UI: Common AWT Classes ..................... SKIPPED
[INFO] ImageJ POM: Swing UI .............................. SKIPPED
[INFO] ImageJ Utility Classes: Swing ..................... SKIPPED
[INFO] ImageJ POM: UIs ................................... SKIPPED
[INFO] ImageJ UI: Swing .................................. SKIPPED
[INFO] ImageJ UI: Swing Commands ......................... SKIPPED
[INFO] The Script Editor ................................. SKIPPED
[INFO] ImageJ UI: Swing Tools ............................ SKIPPED
[INFO] ImageJ Updater (Swing) ............................ SKIPPED
[INFO] ImageJ Application ................................ SKIPPED
[INFO] ImageJ UI: AWT .................................... SKIPPED
[INFO] ImageJ UI: Pivot .................................. SKIPPED
[INFO] ImageJ UI: SWT .................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 15.934s
[INFO] Finished at: Fri Feb 28 23:46:48 CET 2014
[INFO] Final Memory: 20M/245M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.16:test (default-test) on project ij-legacy: There are test failures.
[ERROR] 
[ERROR] Please refer to /home/hadim/local/imagej/core/legacy/target/surefire-reports for the individual test results.
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.16:test (default-test) on project ij-legacy: There are test failures.

Please refer to /home/hadim/local/imagej/core/legacy/target/surefire-reports for the individual test results.
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoFailureException: There are test failures.

Please refer to /home/hadim/local/imagej/core/legacy/target/surefire-reports for the individual test results.
    at org.apache.maven.plugin.surefire.SurefireHelper.reportExecution(SurefireHelper.java:82)
    at org.apache.maven.plugin.surefire.SurefirePlugin.handleSummary(SurefirePlugin.java:190)
    at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:852)
    at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:720)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    ... 19 more
[ERROR] 
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :ij-legacy

Thank you

Tag and deploy current ij-legacy as beta-7.7.1 for use with fiji-compat

I really would like to merge the recent work on fiji-compat (which relies on the new ij1-patcher/ij-legacy combo) and upload soon. For that purpose, I would like to keep a release binding, for which I would need to tag and release a special-purpose ij-legacy (I would make it depend on ij-*-beta-7.7) so I can use the new interfaces (e.g. LegacyEditor) therein.

@ctrueden @hinerm Objections?

Unify web sites

There are multiple overlapping subdomains right now: mirror.imagej.net, developer.imagej.net, wiki.imagej.net. The goal is to unify them to all serve the same content from imagej.net with smart delegation: legacy URLs go to the mirror content, wiki pages load from the wiki, etc.

The front page of imagej.net will become a splash page, with links to ImageJ2, ImageJ1 and Fiji. (The current ImageJ1 front will still get its own URL, imagej1.html or similar).

One challenge is to unify the Drupal and MediaWiki portions somehow. The current plan is to migrate everything from Drupal to MediaWiki and ditch Drupal completely in favor of using wiki.imagej.net as the basis for everything.

Migrated-From: http://trac.imagej.net/ticket/1665, http://trac.imagej.net/ticket/1700, http://trac.imagej.net/ticket/1782

Create screencast on developing ImageJ plugins in Eclipse

We have a screencast on how to develop and debug ImageJ itself from within Eclipse, but a far more common scenario is to develop ImageJ plugins, without hacking on ImageJ itself. As things stand, people find the screencast on the former and believe it to be applicable to the latter, resulting in various confusion and problems. So let's make a screencast for that simpler, and far more common, scenario!

Migrated-From: http://trac.imagej.net/ticket/2043

MiniMaven: ignore excluded dependencies

We have not used any <exclusions> blocks in our dependency declarations... until today. Now that we have need to exclude some transitive dependencies in this way (specifically: the gov.nih.imagej:imagej artifact from the ome:bio-formats_plugins dependency), it would be nice if MiniMaven respected such exclusions and did not copy excluded transitive dependencies into the jars or plugins folders.

Ensure Fiji -> Switch to modern mode is functional

Commit 15758c8 intended to fix issues when switching to modern mode from Fiji, in that downstream discoverable plugins were not being made available to the class loader (for example, SCIFIO-BF-compat and SCIFIO-LifeSci, although uploaded to Fiji and present in the Fiji classpath, would not transfer to IJ2 when switching to modern mode).

The aforementioned commit sets the context classloader on whichever thread calls getContext() first. However, this lead to a bug that caused resources to be discovered twice. This was fixed at the scijava-common level, but apparently this change still has serious negative impact in Fiji. Using the current IJ2 master in Fiji results in a mangled menu bar (see screenshot) and inability to perform basic operations, such as File > Open.

These changes should all be moot after @dscho 's refactoring and improvement of the legacy layer. Until that is ready, we should not upload any current part of IJ2 to Fiji. Once the legacy improvements are complete, we should verify that Switch to modern mode works as intended, with plugins being appropriately available to IJ2.

menubar

Error uploading large sample image file

I have the following error uploading a large Tiff file (1.8Go) via Help>Upload sample image.

[ERROR] Module threw error
java.lang.OutOfMemoryError: Requested array size exceeds VM limit
    at java.util.Arrays.copyOf(Arrays.java:2271)
    at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:113)
    at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
    at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:140)
    at sun.net.www.http.PosterOutputStream.write(PosterOutputStream.java:78)
    at imagej.plugins.commands.upload.SampleImageUploader.upload(SampleImageUploader.java:113)
    at imagej.plugins.commands.upload.SampleImageUploader.uploadFile(SampleImageUploader.java:95)
    at imagej.plugins.commands.upload.SampleImageUploader.run(SampleImageUploader.java:88)
    at imagej.command.CommandModule.run(CommandModule.java:193)
    at imagej.module.ModuleRunner.run(ModuleRunner.java:166)
    at imagej.module.ModuleRunner.call(ModuleRunner.java:127)
    at imagej.module.ModuleRunner.call(ModuleRunner.java:66)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
 $ free -h
             total       used       free     shared    buffers     cached
Mem:           15G        15G       150M         0B       3,4G       4,6G
-/+ buffers/cache:       7,5G       8,1G
Swap:         2,8G       168M       2,6G

I set Edit>Options>Memory to 7000Mb.

Merge updater's `Apply changes` and `Upload to server` into one

People get constantly confused with that poor design choice: in the current architecture, one cannot have both Upload and Update changes at the same time (the rationale was that uploaders should be forced to test their stuff first). So let's disallow that, and consolidate the Apply changes and Upload to server buttons into one.

Support autofilling ImgPlus etc.

If an @Parameter is of type ImgPlus or RandomAccessibleInterval or IterableInterval or Labeling or RegionOfInterest (and possibly other similar ImgLib2 interfaces), it should be possible to fill them with an ImageJ Data object.

Allow returning error codes when running scripts headlessly

When executing ImageJ scripts, plugins or macros headlessly, it would be nice if the process could give a non-zero return code in case of error. Currently, ImageJ1 does not do this.

Added by @luxigo:

It would be helpful if Fiji exit code was not zero when an unhandled exception (eg: java.awt.HeadlessException) is raised in headless mode... at least optionally.

IJ2 metadata format

Hi,

Did you take a decision about http://trac.imagej.net/ticket/1708 ?

I don't think you want to use OME format as IJ2 standard because users not playing with microscopy data will be lost.

IJ1 standard metadata format is binary and so it's really hard to work with. I am a python dev so I process my images with python libs. It's really not easy (for example I can read but not write metadata...).

In my opinion you should define your own IJ2 Tiff metadata format. It will be minimalist and contain only very basic informations about the image. JSON is a perfect candidat for this kind of thing because it's easy to read for machine AND for human.

Let me know about this !

About user image interaction in GUI

Hi again,

I would like to propose you new ways to interact with image in IJ GUI. I will be prefectly ok if you don't think this kind of change is appropriate.

I guess the way user can interact to image come from the really IJ beginning. I found it pretty old and not confortable.

Let me describe what I am talking about : right now user need to enable zoom and pan each time he wants to zoom and pan on the current image. Nowdays we are all using mouse with two buttons with another scroll wheel which can act as a third button.

So what I suggest is to simply add others way to pan and zoom on the image than using pan and zoom buttons on the interface :

  • to zoom we can simply use the scroll wheel : this behaviour is already here but only when zoom tool is enable and I would like to be able to zoom with the scroll wheel even when I have ROI selector tools enable for example.
  • to pan we can use mouse movement when scrool wheel (third button) is pressed. Same comments from above apply.

This kind of way to interact with image are already default on most of the tools I daily use to open images and photos (see all linux image viewer for example). And it seems to me a really natural way to navigate in images.

Hope you understood what I am trying to tell you !

Once again and because it's a pretty big thing I will be perfectly ok if you don't agree with this proposal.

PS: I know I am good to make proposals and report issues and so you could argue me that I could push some commits but I am more a Python dev and it will take me too much time to dive into IJ2 code (and I also have a thesis to write...).

Support multiple monitors better

As reported by @ehrenfeu:

I'm working with a dual-screen layout (internal notebook + external TFT), where the external one is a lot bigger and thus naturally my primary screen.

Depending on the configuration where Unity should place its launcher, ImageJ places most of its windows on the same screen (e.g. the main window, newly opened files, brightness&contrast). However, some windows always get placed on the leftmost screen (histogram, action bars, ...), which is a bit confusing.

So apparently some windows follow a "preferred" screen policy while others stubbornly stick to the first available screen.

We could fix this at the ij-legacy level by adding a patch to be smarter about using GraphicsEnvironment to show dialogs on the expected screen in more cases.

Have an example OpenSPIM image to open and display in ImageJ2

To show-case the new and improved architecture of ImageJ2, we should use our own (large) OpenSPIM data to demonstrate that it does not be loaded into memory completely, but loading happens transparently.

Data:

It might make sense to wait with showing it off until the SPIM Viewer is integrated into the ImageJ2 UI infrastructure...

Migrated-From: http://trac.imagej.net/ticket/1819

Add support for ij.plugins.path

ImageJ 1.x has a plugins.dir system property that controls the directory from which plugins are discovered. In ImageJ2 we will expand this feature to support multiple directories via an ij.plugins.path property or similar.

As an added bonus, this will aid in mitigating certain Eclipse limitations with plugin discovery. We can do a brute force scan of any JAR files that are A) present in ij.plugins.path; and B) missing up-to-date SezPoz metadata. In this way, we can avoid brute force scanning the entire Java classpath, which would be prohibitively slow.

Migrated-From: http://trac.imagej.net/ticket/1208

Respect dependencies declared in the POM

When uploading a JAR built with Maven (i.e., which has a POM in META-INF/maven), we should not only detect dependencies via bytecode scan, but also append any dependencies with runtime scope (and maybe compile scope) declared in the POM. This is important because sometimes a JAR will be a runtime dependency that is not directly referenced in bytecode, but is still necessary in some manner some discovery mechanism, reflection, etc.

Updater: special-case Fiji

Under some unfortunate circumstances the db.xml.gz file ca get lost. In that case, all the update sites have to be readded.

Fiji -- the biggest user of the updater, and also its incubation chamber -- deserves to be special-cased: the updater should detect the presence of, say, jars/fiji-compat[-<version>].jar and activate the Fiji update site by default in that case.

Noticed by Ilan Tal, diagnosed by Jan Eglinger.

Create a Windows installer for ImageJ2/Fiji

Right now, Fiji and ImageJ2 have the problem that if unpacked into the Program Files directory on Windows, the ImageJ Updater does not have full, unimpeded read/write access to its own directory. This is due to the Windows security model. It is in general very difficult to detect programmatically whether things will work; they might seem to work temporarily until the computer is rebooted, for example.

However, there is a potential solution: distribute the Windows version of ImageJ using an installer such as NSIS or Inno Setup, and have the installer flag the entire ImageJ/Fiji directory as globally writable by all users.

For details, see this SO answer and this Inno Setup FAQ entry.

Having a Windows installer will be good anyway because Windows users are most comfortable with them (just like OS X users are comfortable with DMG images which they mount and then copy the .app into /Applications themselves).

One wrinkle is that we still want to give a helpful error message if ImageJ/Fiji was manually unpacked into Program Files without using the installer. To do that, we can have the installer write a stub file into the installation directory, which is not present in the ImageJ/Fiji cross-platform zip distribution. And if the Updater does not see that stub file, it refuses to try to update an installation in Program Files.

Migrated-From: http://trac.imagej.net/ticket/2011

Python binding

I would like to know if you have plan for a python binding?

Note that I don't mean python binding as a script language to be executed into java with Jython. I mean a binding to be able to use IJ and SCIFIO as a python library and so be able to integrate it into a much larger python projects which CPython and others sci python libs (numpy, scipy, pandas and so forth).

I know CellProfiler has developed a "bridge" but I was thinking a much cleaner and less complex (to maintain and to use) solution.

A direct binding with JNI for example (but I guess JNI could be very complex to implement for this kind of big project).

File>New>Plugin (Eclipse)

From @dscho:

Eclipse seems to become more and more popular these days. So, to make things easier for developers, add a plugin that sets up an Eclipse project to develop an IJ2 plugin. This entails:

  • a wizard-like user interface
  • discovering/asking for the location of Eclipse (and remembering it via Preferences)
  • setting up the directory structure
  • activating the annotation processing (see ticket #1023)
  • adding an appropriate Run configuration

We might be able to come up with way to "listen" for an event sent by the Run configuration that triggers

  • setting up a new class loader
  • loading the classes compiled by Eclipse
  • running the plugin
  • giving feedback via the established connection about exceptions/failures/success

Eclipse provides quite powerful debugging facilities. This most likely requires ImageJ's to be started in a special mode listening for debuggers (which we could even store in ImageJ.cfg so that any subsequent restart of ImageJ activates that mode), but we might not be able to benefit from Eclipse's in-place code-replacing.

So: even if we manage to come up with a Run configuration that will run the plugin in the current ImageJ instance, we will most probably need to come up with a standalone Run and Debug configuration (that starts up ImageJ whereever it might be installed, adding the appropriate classpath so the plugin is discovered, possibly loading certain images -- that might be chosen from the list of open images at the time File>New>Plugin (Eclipse) is run -- and then runs the plugin).

As a consequence, we need to teach imagej.Main to sprout a way to open images and call plugins from the command-line. The appropriate place is AbstractUserInterface's processArgs() method (whose javadoc should then contain the note that subclasses overriding that method need to hand off to AbstractUserInterface to handle the default command-line parameters).

Migrated-From: http://trac.imagej.net/ticket/1024

Make output of `FilesCollection.getInstalledVersions()` more succinct

When Fiji users submit a bug, the code asks the FilesCollection class to provide a list of the current versions. This is a bit wasteful, given that most of the files are up-to-date. So let's just list the active update sites, the timestamp of the most recently updated file, and all the files that are not up-to-date, skipping the rest.

While at it, get rid of the funny hex lines that were only relevant as long as people had the old updater.

Add a nice GUI for downgrading in the updater

We have enough information in the db.xml.gz files to downgrade relatively reliably (with multiple update sites, we must trust the servers' time to be synchronized well enough).

To downgrade, we should not ask the user for a date, but rather have an overview of the files that changed, in a chronological order.

As a bonus, this view would give us also a very nice graphical representation of Fiji's development from the users' view.

ImageJ info window pops up when canceling a dialog

Whenever I cancel a dialog (e.g. File>Save As, File>Open..) via the cancel button or hitting escape, a dialog pops up telling me my ImageJ jar version + Java version.

It doesn't cause any problems, it's just confusing, as the first few times I assumed it was an error dialog.

Uploader: Allow easier recovery from stale WebDAV locks

When uploading, first thing is that the db.xml.gz file is locked via WebDAV. However, if the computer crashes, or ImageJ, or the updater, before the upload completes, the lock is not removed.

To allow recovery, we should log the LOCK token and have a little interactive helper (probably in the src/test/java/ part of plugins/uploaders/webdav/) to force-unlock.

This would have helped @iarganda with the problem he reported in http://fiji-devel.54424.x6.nabble.com/unable-to-upload-the-new-version-of-my-plugin-td1435.html...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.