Skip to content

Define project scope #60

@gselzer

Description

@gselzer

As we've been working on the v2-mvc branch, I've been searching for guide rails on what this project should and should not be doing. I think it would be wise to add these things to the README so both devs and users are well aware of the strengths and limitations.

I'm hoping this issue serves as a place of discussion for some of these items, and that a resolution to this issue would see updates to the README.

Looking for opinions & edits, especially from @tlambert03, @marktsuchida, @fdrgsp. It's likely you all have more experience here than I. If people like the general direction of this, I'm happy to create a PR where we can collaboratively hammer this out.

What pyapp-kit/ndv (should) do

View data. This includes:

  • Multi-dimensional arrays. This dataset need not be final - ndv should efficiently handle "updating" datasets, which could imply overwritten values in existing indices or the addition of new indices.
  • Dataset statistics. Values computed from (regions of) a dataset (e.g. min, max, histogram, average, ...) are themselves "views" of the data.
  • Metadata. This feels dangerous, but e.g. Enable scale bar #46 pertains to metadata and I think it belongs within our scope. The existing README text also talks about "taking advantage of named dimensions and categorical coordinate values", which also falls here. The question is, do we draw a line between supported and unsupported metadata?

What pyapp-kit/ndv should/does not do

Anything else. The following tasks would resemble scope creep, detracting from our goal above:

  • I/O. Other libraries do this better and are easily integrated outside of the viewer.
  • Plugins, Data processing, annotations. Intensive routines would detract from loading/rendering datasets.

I'd like opinions here, as a lot of my reasoning is "gut feeling" - I'd like these "should nots" to be solidified with valid reasoning in the eventual README edits. I'd also like answers to the following questions to be reflected in our final version:

  • Where do we draw the line between statistics and data processing? My personal needs for this project require a histogram so I feel like it belongs here, but why should that be allowed when e.g. a threshold would not be?
  • Where do we draw the line between offering ROIs and e.g. performing segmentation?

Similar projects

Inevitably users will want some of the things that ndv will not provide. We should direct users towards the projects that focus on those things, as likely do them better than ndv could (if we wanted them to):

  • napari provides plugins, and I/O but does not offer the flexible data model.
  • pyimagej similar.
  • fastplotlib focuses on plotting over pure visualization, lesser focus on n-d, tied to pygfx.

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentation

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions