Code Monkey home page Code Monkey logo

simtoi's Introduction

SIMTOI

SIMTOI Screenshot

The SImulation and Modeling Tool for Optical Interferometry (SIMTOI) is an open source (GPL v3) software package for simulating and modeling optical interferometric observations of complex astrophysical sources that are not easily described by analytic expressions.

NOTE SIMTOI is no longer under active development. We will; however, fix bugs when they are discovered and accept pull request that implement new features.

Installation Instructions

At present the only method of installing SIMTOI is compilation from source. Please see the instructions on the wiki for further information.

Reporting issues

If you encounter any issues with the code, or have requests for new features, please open a new ticket on the GitHub issue tracker You can also send any questions/issues to [email protected]

Please try and resolve installation issues with your system administrator, as they are likely due to issues with dependencies - however, if you think you have encountered a genuine issue in the installation, please do report it.

Contributing

In addition to reporting issues with the code or the documentation, code and documentation contributions/patches are welcome. Please read the following page for more details on how to contribute code.

Acknowledgements

SIMTOI includes the following libraries as part of its distribution:

SIMTOI supports, but our repositories do not include,

  • MultiNest A bayesian nested sampling minimzation engine.

Licensing

SIMTOI is free software, distributed under the [GNU Lesser General Public License (Version 3)](<http://www.gnu.org/licenses/lgpl.html).

If you use this software as part of a scientific publication, we request that you cite its use as follows:

Kloppenborg, B.; Baron, F. (2012) "SIMTOI: SImulation and Modeling Tool for Optical Interferometry" (Version X). Available from https://github.com/bkloppenborg/simtoi.

Kloppenborg, B.; Baron, F. (2012), "LibOI: The OpenCL Interferometry Library" (Version X). Available from https://github.com/bkloppenborg/liboi.

If you use the levmar minmizer, see their instructions for including a suitable reference.

If you use the MultiNest minimizer see reference instructions on the MultiNest website

simtoi's People

Contributors

baronfabien avatar bkloppenborg avatar matdander avatar therob762 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

simtoi's Issues

Profiling using nvvp

SIMTOI needs a convenient way of loading data, models, and instructing the minimizer (whatever it may be) to execute on the data so that profiling via. nvvp may be conducted.

FITS Export

To use SIMTOI modeling within image reconstruction software, FITS image exporting must be supported.

Open model / OIFITS dialogs need to keep path

The model and OIFITS open file dialog does not keep the path of the last opened file. At present the code shares a common path between the two dialogs, this should not be the default behavior.

Enable Anti-aliasing

SIMTOI should have anti-aliasing turned on by default. You will need to add glRenderbufferStorageMultisample and similar 2D/3D buffers to the off-screen renderbuffer to make this work.

UI Improvement

The data and model lists should switch when a different mdisubwindow is selected.

Refactor Model / Feature / Shader Classes

The Model, Shader and Feature classes all use the same setup for managing parameters so the source should be refactored so there is one common base class for such objects.

Framebuffer won't init causes segfault

There is a bug lingering in CCL_GLThread::InitMultisampleRenderBuffer(void) which will cause a segfault if the framebuffer can't be created. It is purely due to the way gluErrorString is being interpreted:

 // Check that status of our generated frame buffer
    if (status != GL_FRAMEBUFFER_COMPLETE)
    {
        string errorstring = string( reinterpret_cast<const char *>(gluErrorString(status)) );
        printf("Couldn't create storage frame buffer: %x %s\n", status, errorstring.c_str());
        exit(0); // Exit the application
    }

Refactor list classes

CFeatureList, CGLShaderList, and CModelList all share several things in common. These could be refactored into a common CLists class and then subclassed as necessary.

CVectorList should be replaced by vector< std::shared_ptr<type> >

With C++11 the shared_ptr data type (in ) can be used with vectors to store data. This data type insures that objects are destroyed when there are no longer any references. The CVectorList data type is therefore superceeded and should be replaced.

Note, this will likely require several internal changes to the library to make it C++11 compatible.

New Model: Flux Plane

Add a model that has flux constrained to a plane, might be useful for simple fits of YSOs or debris disks.

Drop GLUT

The way the software is written requires that the minimization engine drives the rendering process, but GLUT cannot hand off any rendering/monitoring operations to an external thread. It appears QT CQTOpenGL widget can do this so we'll switch to that instead. This will require significant refactoring sadly.

Changeable multisample anti-aliasing level

Currently MAA is set to 4x. If the user's hardware supports it, MAA should be either maximized by default (i.e. detect the level and initialize to that) or a user-configurable parameter through a JSON config file.

Yaw, Pitch, Roll

The yaw, pitch, and roll of the models does not seem to correspond to astronomical conventions. To see this affect, simply create a Disk model and change the inclination and position angle. Position angle = 90 looks like inclination = 90.

New Model: Additional Disks

Dullemond & Monnier 2011 present several disk models which are probably worth implementing. To use these we will need to define the surface, perhaps when the models have unit opacity?

For small grains:
Equation 13 from Isella & Natta (2005)

Also look to see if there is an analytically approximation of their radiative transfer results.

Minimizer: Basic Grid Search

Add a basic grid-search minimizer that splits the free parameter ranges into a user-defined (100 default) number of samples or the maximum allowable resolution permitted by the pixellation grid. The minimizer shouldn't do anything intelligent. Instead, simply write out a grid of data points:

param_1, ... , param_N, chi2, log_Z

Minimizer: Bootstrap

It would be useful to have a bootstrap minimizer built into SIMTOI so statistics from existing minimizers (i.e. Levmar and MultiNest) can be verified using traditional statistical approaches.

If the data loaded are of size N, then

  1. Pick some random sample of the data (with some repeats) totaling size N
  2. Run some minimizer (levmar?) and record the best-fit parameters and ending chi2
  3. Repeat this 1000's of times
  4. Output the raw data and output a statistics file consisting of the histogram of chi2 vs. parameter values.
  5. Then use the results of the histograms to generate statistical information (i.e. nominal values and uncertainties).

Add Priors for Bayesian Inference

To use Bayesian inference the parameters need to have corresponding priors. At present no priors are included in the computation.

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.