E. Farhi, ILL/DS/CS - Version 2.0.2
- Nov. 27, 2018

(2022 update: Legacy Ubuntu 16.04-based docker available, see https://github.com/McStasMcXtrace/iFit-16.04-Docker)

(2022 update: Legacy Ubuntu 16.04-based docker available, see https://github.com/McStasMcXtrace/iFit-16.04-Docker)

- Purpose
- Main functionalities
- Ok, let's start !
- For beginners
- Help me !
**Obtaining the package**- Credits, Links and Disclaimer

Welcome to the iFit Data Analysis library !

<ifit.mccode.org>

"Simple methods to be used for complex data analysis"

Main functionalities are

[ iData Load Plot Math Fit Save Optimization iFunc Models File formats]

[ miFit PyFit Phonons ResLibCal McStas Neutron Scattering ]

iData | the main container for data sets |

Load | how to import data sets into iData objects |

Plot | how to plot a data set (1D, 2D, 3D and above) |

Math | plenty of math to work with data sets |

Fit | how to fit a model onto a data set (using
an optimizer) |

Save | saving data sets |

Optimization | routines for optimisation of anything
(including models) |

iFunc | the main model object |

File formats | a list of supported input file formats
(for data sets and models) |

miFit | the main iFit user interface (for those
avoiding command lines) |

PyFit | using iFit from Python |

In addition, we provide some

Models | pre-defined models (1D, 2D, 4D) |

Neutron
Scattering |
Neutron scattering data treatment |

Phonons | lattice dynamics aka phonons |

ResLibCal | Neutron triple-axis spectrometer model,
resolution and fitting |

McStas | Monte-Carlo neutron/x-ray ray-tracing
instrument simulation |

The library can be used from

From the prompt (command
line) |
User interface: miFit |
neutron TAS: ResLibCal |

Have a look at the Quick Start or the iFit standalone page. There, you mostly manipulate iData and iFunc objects. |
an advanced yet simple user interface to load data sets, plot, transform, export, and fit. |
compute the neutron TAS spectrometer resolution ellipsoid (ResCal/ResLib merge) |

Get more details about what's in the box.

To download and install the package,
refer to the Install page.

We then recommend that you start with the miFit user interface.

If you want a quick example with commands, refer to the Quick Start page. Otherwise, the typical usage would be:

We then recommend that you start with the miFit user interface.

If you want a quick example with commands, refer to the Quick Start page. Otherwise, the typical usage would be:

Start Matlab... or iFit stand-alone

>> addpath(genpath('/some/path/to/iFit')); % not needed for the stand-alone version

>> a = iData([ ifitpath 'Data/ILL_IN6.dat' ]);

>> plot(log10(a))

>> b=2*a+log(a)

>> plot(gauss2d)

>> parameters=fits(a,gauss2d)

>> saveas(a,'filename.pdf')

If you do not know Matlab already,
you will discover that using the iFit library does not require
advanced IT knowledge. The general syntax are rather intuitive,
and all methods are able to tolerate (and correct) most of the
user mistakes. In this respect, when some of the input parameters
are missing, sensible choices can be made automatically. You can
look at the iFit standalone page, where a
short Matlab introduction is available.

If you have used in the past the MFit/MView suite, you will find that this library has the same scope, but omitting the user interface.

If you have used the Spec1d object, you will quickly find that the iFit follows exactly the same syntax.

If you come from the Python world, you will find out that the iFit syntax is pretty close. We provide for you a Python interface to iFit which exposes iFit objects and methods into Python. Refer to the PyFit page.

If you have used in the past the MFit/MView suite, you will find that this library has the same scope, but omitting the user interface.

If you have used the Spec1d object, you will quickly find that the iFit follows exactly the same syntax.

If you come from the Python world, you will find out that the iFit syntax is pretty close. We provide for you a Python interface to iFit which exposes iFit objects and methods into Python. Refer to the PyFit page.

>> doc(iData)and help pages for each function/method, which you can access with e.g.

>> doc(iFunc)

>> methods(iData)

>> help iDataA Tutorial (Jan 2012) is available as PDF presentations with exercises.

>> help iData/load

>> help iFunc

You may also search this whole documentation (using Google): Finally, the whole Matlab documentation is available on-line for free, especially to complement the standalone limited help system.

If you find new bugs please send them to me [farhi (at) ill.fr] with:

- your Matlab version
- the iFit version which you can get from the Matlab command version(iData)

- the script/command that reproduces the error together with any required external data file
- a copy of the error messages produced by the script/command.

- a smile ;-)

You may register by entering your email address and press subscribe:

Installation for Linux Debian-class systems is simplified using package managers - see here.

When starting from scratch, we recommend installing a Ubuntu system, then add package

Please register to the ifit-users mailing list.

Substantial contributions from Y. Debab and P. Willendrup.

If you produce scientific output using iFit, I'd appreciate if you cite the following reference:

- E. Farhi, Y. Debab and P. Willendrup, J. Neut. Res., 17 (2013) 5. DOI: 10.3233/JNR-130001
- E. Farhi, The iFit data analysis library, ILL, Computing for Science (2011-2012) <http://ifit.mccode.org>.

See the Credits page for more information on contributions, including licensing.

A set of links to related packages is also included there.

An other solution is to use the GitHub 'pull request' mechanism, i.e. login at GitHub, fork your own iFit repository, modify it at your convenience, and then mark changes for inclusion back into the master iFit branch. These changes will then eventually be validated, and inserted into the project.

Disclaimer:

This software is experimental, and should not be considered bullet-proof. In particular, expect many bugs - which should be reported to me [farhi (at) ill.fr] or as an 'issue' on GitHub if you want them to be fixed quickly. Also, this prototype is known to be slow. This will be improved gradually...