Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reshuffle packages. #121

Merged
merged 14 commits into from
Sep 30, 2020
Merged

Reshuffle packages. #121

merged 14 commits into from
Sep 30, 2020

Conversation

tinevez
Copy link
Contributor

@tinevez tinevez commented Jul 1, 2020

This PR has two goals:

  • It aims at integrating the 'revised' package into a sensible package hierarchy.
  • It aims at decoupling the generic Mastodon* interfaces and mother classes from the Mamut* classes that implement them, and are specific to a runnable application.

Here is the logic for the second point. In this repo you will find 1) Mastodon base classes and 2) the classes for the MaMuT application.

  1. Mastodon base classes.

There are base classes and interfaces to derive and implement to create an application (or 'app') specific to a topic. What we call 'topic' could be 'segment, track and lineage cells objects in 2D'.
The name of these classes is normally prefixed with MastodonSomething.

These classes are like abstract classes. By themselves, they cannot be made to something an end-user can run. The core classes of an app would derive a model for instance from a org.mastodon.app.MastodonAppModel and derive an org.mastodon.model.AbstractSpot to store location of objects.

  1. The MaMuT application.

These classes are part of an app, whose topic is 'tracking and lineaging cells, with cells represented as ellipsoids'.

This app is the final and central application of Mastodon. When end-users and us speak of Mastodon, we mean this one. It is based on the org.mastodon.mamut.importer.Model and on org.mastodon.mamut.importer.Spot.

Because this app is the successor of the MaMuT project (Wolff, Tinevez, Pietzsch et al, 2018) the classes of this app are called MaMuTSomething.

With this commit:

  • They are all located in the org.mastodon.mamut package.
  • None of the Mastodon base classes depend on these classes.

To achieve the last point, I had to move many classes around, and introduce some specific interface hierarchy. For instance, there is now a package org.mastodon.app.plugin, that defines interfaces for a generic plugin system, and that is implemented for the MaMuT app in org.mastodon.mamut.plugin.

tinevez added 12 commits July 1, 2020 15:15
This commit has two goals:
- It aims at integrating the 'revised' package into a sensible package
hierarchy.
- It aims at decoupling the generic Mastodon* interfaces and mother classes
from the Mamut* classes that implement them, and are specific to a runnable
application.

Here is the logic for the second point. In this repo you will find
1) Mastodon base classes and 2) the classes for the MaMuT application.

1. Mastodon base classes.

There are base classes and interfaces to derive and implement to create an
application (or 'app') specific to a topic. What we call 'topic' could be
'segment, track and lineage cells objects in 2D'.
The name of these classes is normally prefixed with MastodonSomething

These classes are like abstract classes. By themselves, they cannot be made
to something an end-user can run. The core classes of an app would derive a
model for instance from a org.mastodon.app.MastodonAppModel and
derive an org.mastodon.model.AbstractSpot to store location of
objects.

2. The MaMuT application.

These classes are part of an app, whose topic is 'tracking and lineaging
cells, with cells represented as ellipsoids'.

This app is the final and central application of Mastodon. When end-users and
us speak of Mastodon, we mean this one. It is based on the
org.mastodon.mamut.importer.Model and on org.mastodon.mamut.importer.Spot.

Because this app is the successor of the MaMuT project (Wolff, Tinevez,
Pietzsch et al, 2018) the classes of this app are called
MaMuTSomething.

With this commit:
- They are all located in the org.mastodon.mamut package.
- None of the Mastodon base classes depend on these classes.

To achieve the last point, I had to move many classes around, and introduce
some specific interface hierarchy. For instance, there is now a package
org.mastodon.app.plugin, that defines interfaces for a generic plugin system,
and that is implemented for the MaMuT app in org.mastodon.mamut.plugin.
Some users reported issues with spot features that are not computed
(e.g. spot intensities in weird images). With this flag we can make
a UI that will simply force the selected features to be computed for
all objects ignoring whether they are up to date or not.
It is better to simply make a custome feature computer for
special needs.
We had to add implement a new method from the Listeners.List interface.
They are set properly in the parent pom now.
The previous version with a feature update stack with too
complex for something that ought to be simple. This new version
takes a much simpler approach, resuling in much fewer classes and
also lower memory and disk footprint.

The idea implemented here is that, instead of tracking when a spot
or a link is modified, we simply remove modified spots and links from
the features. This way the modified objects appear with empty values
after they have been modified (or created).

Features that want to implement incremental updates simply have to
recompute values only for objects with missing values.

In case of issues (there will be), a flag in the feature computation
service allows to force the recomputation over all objects, ignoring
their status.
@tinevez tinevez force-pushed the reshuffle-packages branch 2 times, most recently from fbe9446 to 69d9655 Compare September 9, 2020 13:34
@tpietzsch
Copy link
Contributor

@tinevez Great, thanks!

Could you please look at the TODOs I added in d3a41e2
in particular d3a41e2#diff-a3220cd04b0cdf7858b95aa72d929227R55-R58

@tpietzsch tpietzsch merged commit 8a1495c into master Sep 30, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants