Opinion: for a cross-platform user interface, use a web interface.
In python, you need to use a third party library to create a user interface.
MVC Design: Model * View * Controller
Model: the representation of the data you're working with (typically a database)
View: how you present your model data (e.g. a web page)
Controller: retrieves data from model and passes it to view for display (e.g. a python script)
Model doesn't care how data is viewed; View doesn't care how data is stored.
Flask & Django are python frameworks that employ MVC design.
Avoid PHP - it grossly violates MVC design.
Create maps, add markers and pan/zoom, with JavaScript library Leaflet: http://leafletjs.com
JSON (JavaScript Object Notation) to exchange data with another program. In python, "import json" and use json.dumps() & json.loads()
If you need a database, use only one of these two:
*PostgreSQL - must be installed on a server; can handle many users, easy support for indexing points on a sphere, e.g. cone searches (q3c)
*SQLite - already installed on your computer. For your convenience.
* Object Relational Mapper (ORM) - sits between a database and objects/classes
* You interact with an ORM in an individual Session
* SQLAlchemy: Demitri, Brian C, ...
import sqlalchemy
... # create org and student objects
session.add(org)
session.add(student)
session.commit() # saves data
***Advice: Learn to write in an object-oriented coding style***
* APIs: Dan F-M, Tom R, Brian C, Demitri M, ...
* To let other people build their own applications on top of your data, you will need to design an API, e.g. using Flask, and host it on a server. Example: http://api.sdss3.org/api_spectrum.html
* In principle, the View can stay the same as the Model changes, but the Controller must change if the Model changes.
(The API can stay the same as the data format changes.)
* JavaScript visualization: D3.js is the premiere data visualization library for JavaScript. Very low-level and therefore complicated.
* Convert C/C++/Fortran to JavaScript: http://emscripten.org
e.g. CFITSIO conversion: https://github.com/astrojs/fitsjs
Question: How to figure out how new a computer needs to be to run a particular application?
Answer: everything discussed here can be run on a Raspberry Pi $30 computer... can get a free Windows license for same.
No comments:
Post a Comment