Coder Social home page Coder Social logo

opencor / opencor Goto Github PK

View Code? Open in Web Editor NEW
31.0 8.0 26.0 176.09 MB

OpenCOR is a cross-platform modelling environment, which can be used to organise, edit, simulate and analyse CellML files.

Home Page: https://opencor.ws/

License: GNU General Public License v3.0

Shell 0.18% C 0.99% CMake 2.52% NSIS 0.09% C++ 94.11% HTML 0.17% XSLT 1.19% Batchfile 0.16% Objective-C++ 0.05% Python 0.47% Jupyter Notebook 0.04% VBScript 0.03%

opencor's Introduction

opencor's People

Contributors

agarny avatar code-factor avatar dbrnz avatar gbernardino avatar jagirhussan avatar jonrkarr avatar mirams 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

opencor's Issues

Core plugin

Our core plugin on which every other plugin relies.

Improved COR-like view for a CellML file

Starting from the COR-like view (issue #17), it would be good to go one step further, i.e. have a view like the COR-like view but without CellML-specific concepts such as public/private interfaces, encapsulation hierarchy and connections.

Allow the application's layout to be 'locked'

Currently, the GUI consists of different docked windows (e.g. the help window). These windows therefore have a title-bar even when docked. This title-bar takes space, so if we were to allow those windows to be 'locked', when docked, then we wouldn't have those title-bars and would therefore gain some space.

Docked window for any message that might be of interest to the user

There are certain events (e.g. the dropping of a file, on the file organiser widget, which already exists) which would benefit from being mentioned to the user, but in a 'silent' way. One way to do this would be to have some kind of a message window for any message that might be of interest to the user, but which doesn't need to break the user's workflow.

Undo/redo feature

As much as possible, it would be good if various features within OpenCOR supported the undoing/redoing of actions.

Generic shortcuts throughout the GUI

It would be nice to have the same shortcuts (e.g. Ctrl+C) for different windows (e.g. the main window and the help window). (This seems to be a bit tricky to implement, even when changing the value of QAction::shortcutContext.)

File browser plugin

We have some code for a file browser, but it now needs to be made available as a plugin.

Have menus reflect the view in which we are

Depending on the view in which we are (e.g. the "Raw CellML" view in the editing mode or the "Single cell simulation" view in the simulation mode), the menus should reflect the view in which we are. The reasoning for this is that menus used in an editing view will be of no relevance to a simulation view, and vice versa.

Some plugins have a dependency on other plugins. For example, the "Raw CellML view" has a dependency on the CoreCellMLEditing plugin which itself has a dependency on the CoreEditing plugin. The CoreEditing plugin will ideally offer menus that are relevant to any editing view while the CoreCellMLEditing plugin will offer menus that are relevant to any CellML-related editing view. So, when switching to the "Raw CellML" view, we have to take those dependencies into account.

Add support for Zinc

Version manager

As an extension of issue #1, it would be good to be able to track the different versions (nightly builds, beta versions and release versions) of OpenCOR and thus allow the user to go from one version to another.

Indeed, say that the user uses an official version of OpenCOR (version N) and that a nightly build (version N+1) becomes available. The user might then want to test version N+1, but then revert to version N afterwards (because version N+1 is too buggy, he would rather stick to an official version, etc.).

In other words, the user should be able to go forward, as well as backward, when it comes to the different versions of OpenCOR.

File organiser plugin

We have some code for a file organiser, but it now needs to be made available as a plugin.

Run/pause/stop a simulation

Someone should be allowed to run/pause/stop a simulation. When a simulation is paused, the user should be allowed to edit the model's parameters (see issue #29).

Support for plugins

Especially for the analysis of files, it would be good to support plugins, so that the community can contribute to the project by developing plugins (e.g. a plugin to analyse cardiac action potentials and extract some key parameters from them ) and making them available to the rest of the community.

Add support for definite integrals

Right now, OpenCOR can 'C' parse a model that contains definite integrals, but then it won't generate any binary code (using LLVM) for it.

Demo CellML files are not read-only when deployed on Windows

When deploying OpenCOR on Windows, the CellML files that are deployed in the models folder should be read-only, but they are not. This occurs using both the ZIP file and the NSIS setup program. (Everything works as expected on Linux and Mac OS X.)

Check for updates feature

Any decent application should have an auto-update feature and this is what this feature is about. It will clearly have to be platform-dependent, and should only update what needs updating (i.e. add/replace files, remove files, etc.).

By default, only updates for a release version of OpenCOR should be offered. However, the user should be allowed to update to a beta version or even a nightly build of OpenCOR, should he so desire.

A possibly useful resource is KDUpdater (see http://docs.kdab.net/kdtools/2.2.2/group__kdupdater.html).

Diff of two CellML files

This is a feature on which many software developers rely, and which would be equally useful to modellers and model users.

Gracefully handle a crash

Any crash of OpenCOR should be gracefully handled, i.e. ideally OpenCOR would generate a crash report that the user could then email to us.

Note, however, that the 'issue' with such a feature is that if we want to make the report useful to the OpenCOR team, then OpenCOR will have to be built with debug information. The questions then are:

  • How much bigger is the application going to be?
  • Is it going to slow things down a lot (because of a debug vs. release version of OpenCOR)?
  • What about Qt libraries?
  • What about third-party libraries (currently built as shared libraries)?
  • What about our own plugins (which should also be built as shared libraries)?
  • Etc.

Full screen mode not checked upon restart

Say you are in full screen mode, then exit OpenCOR and restart it. You would expect the full screen mode to be 'checked', but it's not which means that if you, say, press F11, then nothing happens. However, the second time you press F11, then OpenCOR restores itself from the full screen mode.

Help plugin

Everything in OpenCOR should be done through a plugin, even for the help.

Drag and drop of a tab onto the file organiser widget

Drag and drop is now well supported in OpenCOR (between the file browser and file organiser widgets, as well as between those widgets and the central widget). However, it would be nice, when a file is opened in the central widget, if we could drag and drop its tab onto the file organiser widget.

Create a plugin for the analysis of cardiac action potentials

Analysis features will mainly be provided by the community through the use of plugins. However, it would be nice to provide one as an example. So, we could create a plugin for the analysis of cardiac action potentials. The idea would be to extract some key parameters from those action potentials (e.g. upstroke velocity, action potential amplitude, action potential duration at 90% repolarisation).

Cmd+M doesn't minimise OpenCOR

On Mac OS X, to click on Cmd+M normally minimises the application that currently has the focus, but this doesn't work (anymore?) with OpenCOR.

CellML plugin

The CellML API should be accessible through a plugin. In our case, since we don't want to have to build the API ourselves (too many external dependencies!), we should use the binaries provided by Auckland.

Graphical view for a CellML file

There are different ways we could edit a CellML file (e.g. issues #16, #17, #18 and #19). Another would be to have a graphical representation of a model, either in 2D (using SVG) or in 3D (using cmgui), and this based on the metadata/ontology information present in a CellML file. This would, among others require support ontologies (issue #12) and cmgui (issue #15).

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.