Giter VIP home page Giter VIP logo

pynfold's People

Contributors

vincecr0ft avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

pynfold's Issues

Iterative

Iterative ("Bayesian"; as proposed by D'Agostini)

  • notebook on base algorithm
  • backend implementation
  • verification of algorithm
  • documentation of implementation

Add option to create Theano graph for calcualation

The priority of this issue depends on how well the numpy linear algebra solutions perform. If calculations are particularly slow then this might need bumping up.

  • expand pynfold base class to use theano for matrix algebra.

Additional functions

Expand base functionality to include features not directly classified as 'unfolding' but that uses the same data stored within the base class.

  • identify any expansions

Inversion without regularisation

A simple inversion of the response matrix without regularisation.

  • A notebook to detail the base algorithm
  • Implementation in pynfold backend
  • description and examples of implementation.

Implement inverse-problem in pynfold

Implement Tikonov regularisation algorithm in pynfold. First iteration might use a notebook depending on the status of the pynfold backend milestone.

  • Implement algorithm

Compare PynFold to RooUnfold to Non-ROOT alternatives.

PyFold should either be able to take in ROOT Histograms AND numpy arrays or use root_numpy to convert algorithms such that the histograms can be compared bin to bin.

  • Devise method for comparing results
    • Bin counting (if algorithm is deterministic)
    • χ² test (otherwise)
  • Compare results

Regularised SVD

Singular value decomposition (SVD; as proposed by Höcker and Kartvelishvili and implemented in TSVDUnfold)

  • Notebook describing base algorithm
  • implementation in pynfold backend
  • documentation and example of implementation

TUnfold

A clone of the TUnfold method developed by Stefan Schmitt

  • A notebook detailing the base algorithm
  • Implementation in PynFold backend
  • description and examples of implementation

Unfolding Object

Should be initialisable and contain:

  • relevant Histogram objects

  • response/migration matrix

  • error handling in case object defined without necessary properties.

  • set priors (nominally flat)

  • plotting functionality (separate issue?)

Avoid ROOT dependencies

Avoid ROOT dependencies inside, let's have it be pure python. If people want to use ROOT, they should use something else to convert ROOT histograms into numpy format.

OneHist should just be a numpy array.

TwoHist should just be a numpy matrix (don't call it a 2-d histogram).

Bin-by-bin

The bin-by-bin unfolding method aka simple correction factors.

  • Notebook detailing the base algorithm
  • implementation in pynfold backend
  • documentation and examples of implementation

Find RooUnfold equivalent to InverseProblem solutions.

The nomenclature of these fields might be misleading. This is a regularised unfolding, but also iterative. The precise algorithm used should be exactly the same

  • if there is no RooUnfold equivalent find another package that is.
  • write a notebook to describe algorithm with rigour.

Histogram Objects

To enable comparisons between PynFold and RooUnfold it should be possible to read several input formats and provide a custom Histogram object.

  • check if numpy array (else)

  • check if numpy histogram (else)

  • check if ROOT installed and if so is THF

  • apply histogram operations (subtract, multiply, divide etc.)

  • ensure that operations propagate errors correctly.

  • Basic support for 1 dimensional histograms of equal size (truth and measured)

  • 1 dimensional histograms of different size

  • Basic 2 dimensional histograms (response matrix)

  • multidimensional hists (truth and measured)

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.