Opened 7 years ago

Closed 5 years ago

#294 closed enhancement (fixed)

Refactor Model Interface

Reported by: butler Owned by: butler
Priority: blocker Milestone: SasView 4.0.0
Component: SasView Keywords:
Cc: Work Package: SasModels Redesign

Description (last modified by butler)

Currently addition of a new model in C requires a rebuilding of the SasView GUI application. Furthermore it requires the creation/editing of a lot of different files and is anything but straightforward making the learning curve quite steep. Finally, while a user can simply add a custom python model, that model does not have access to the necessary polydispersity calculation. Also not clear how the python model code can call a C model (to enhance for example). Making the addition of a C model simple and allowing python model to work properly with polydispersity would have a HUGE impact. New models are probably the single most important thing for the user community and with this change model addition can be removed from the core developer group tasks to being something instrument scientists and power user can do.

Goal/scope of project: Define and implement a clean C plugin interface that allows dropping a new C based model onto disk that can be discovered live by SasView. If at all possible allow python models to have access to polydispersity code.

Design Requirements:

  • Adding a new model in C (for speed) should consist of writing only one file and may possibly require compiling of the model into a shared library file (how does one handle multiple platforms?)
  • Adding a new model in C or python consists of dropping the appropriate file into the models directory for discovery by the running application (not GUI bits at this point — applications can send to GUI bits)
  • GUI must update available models while running
  • Polydispersity treated properly for constrained/simultaneous
  • Accessible Attributes for S(Q), multiplicity, etc
  • Minor requirement
    • All models should be treated the same (custom, python, “built-in” etc.)
  • Optional requirement
    • Would also be nice if python models can access polydispersity
    • Compatible with multiprocessing

Change History (7)

comment:1 Changed 7 years ago by butler

  • Milestone changed from SasView Next Release +1 to SasView 3.1

comment:2 Changed 7 years ago by butler

  • Milestone changed from SasView 3.1 to SasView Next Release +1

moving to release 4.0

comment:3 Changed 6 years ago by butler

  • Milestone changed from SasView Next Release +1 to SasView 4.0.0

This seems like an umbrella ticket that covers all of sasmodels project. It does seem to have a lot of the original "requirements" that may be interesting/useful to look back at so will just move to 4.0.0 (where the sasmodels work is getting done) and not tag it duplicate at this juncture. Once sasmodels is out we should probably close this as well.

comment:4 Changed 6 years ago by butler

  • Description modified (diff)

comment:5 Changed 6 years ago by butler

  • Priority changed from major to blocker

as the "umbrella" this is clearly a core 4.0 task so calling it blocker … though not sure it has impact on schedule at this point.

comment:6 Changed 5 years ago by butler

  • Owner set to butler
  • Status changed from new to accepted

Will close when we finish the tasks it refers to — making myself owner of ticket so that it does not show up as an orphan ticket.

comment:7 Changed 5 years ago by butler

  • Resolution set to fixed
  • Status changed from accepted to closed

am going to close this ticket now as we move into beta. The individual current tickets and any new ones as bugs are discovered will stay until fully resolved but utility of keeping this hanging around for the "original requirements" nor longer seems useful.

Note: See TracTickets for help on using tickets.