Skip to content

Create ExperimentalDataset app with basic model & views #131

@jonc125

Description

@jonc125

This may still get split into sub-issues...

  • Figure out what is common with Experiment (cf Rename Experiment as Prediction #130) and put in a mixin class / common 'dataset' app (see also https://github.com/ModellingWebLab/project_issues/wiki/Workshop-notes-2018 and Restructuring Django model + app hierarchy #203)

  • Need probably many-to-many links between ExperimentalDataset and Protocol, and only once a fit is performed do you tie down exactly which were used? @MichaelClerx ?

  • Add views to (these are probably almost identical to the entity views):

    • User uploads a dataset
    • Show list of datasets owned by user
    • View a single dataset
  • Create an ExperimentalDataset model in its own datasets app

    • This should not have versions, so any changes mean a new dataset (for now)
    • It's just a zipped-up collection of files, with a manifest created by the Web Lab, so it can be downloaded again as a COMBINE Archive. The files should live in their own folder hierarchy next to EXPERIMENT_BASE, with a corresponding config setting giving the root path.
    • Probably inherits from UserCreatedModelMixin, VisibilityModelMixin, models.Model and needs a name
    • A dataset links to a single Protocol - this should be set on creation, e.g. from a drop-down list
    • Respect dataset visibility #202 Only protocols a user is allowed to see should be offered - see how this was done for FittingSpec in Add DB models & views for fitting specifications #222 for inspiration
  • Create views to (these are probably almost identical to the entity views):

    • User uploads a dataset
    • Show list of datasets owned by user
    • View a single dataset
      • Basic view
      • datasets:archive view like in experiments/views.py
      • datasets:file_download view like in experiments/views.py
      • Plotting arbitrary CSV files
      • Doing so "sensibly" for files where time isn't the first column, or tabs are used as separators...
      • Read the header row (if present) to determine what columns represent? Eventually we should probably try https://www.papaparse.com rather than our own CSV parser.
    • Delete a dataset
  • Add ability to compare data with predictions

    • On experiment results view, have a drop-down select for any dataset linked to the relevant Protocol
    • Also overlay on comparison plots. This is probably largely template & JS code copying what's done for the single overlay, except that there might be multiple protocols to look at when finding linked data. Search dataset-link in experimentversion_detail.html and experiment.js
      • It'd be nice to go from a Dataset view to comparing predictions of all (relevant) models. Similar UI flow to comparing predictions from a Model. Eventually use species annotations to filter?
  • Add ability to compare data with data

    • Figure out what the UI should be here. Perhaps when viewing a single dataset, there should be a link/button 'Compare with other experimental data associated with this protocol' which then takes you to an equivalent of ExperimentComparisonView

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions