iFit: Credits and Contributions

  1. Credits
  2. Licensing
  3. Project cost
  4. Links to other related projects
  5. Contributions


iFit was invented by E. Farhi and took many years to come to you. ILL,
        Grenoble, France <www.ill.eu>
Substantial contributions from Y. Debab and P. Willendrup.
If you produce scientific output using iFit, I'd appreciate if you cite the following reference:
iFit is a licensed product from the Computing for Science group at the Institut Laue-Langevin, Grenoble, France.

If you wish to contribute, send suggestions, scripts, and new functions/methods to [farhi (at) ill.fr]. Your contribution will then be included in the next release, with proper credits to the authors. You can also contribute through the merge request mechanism at the Github repository.

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] if you want them to be fixed quickly.


The iFit package is provided within the frame of the EUPL license, either as Source Code or Executable Code (standalone versions). The text of this license is included in the packages.

In short, you can use, copy, distribute and modify the Code. However, a number of restrictions apply, especially when producing derived work (that is modify and redistribute the code in other products). In particular, the derived work must be licensed under the EUPL or a Compatible License, label all modifications explicitly, distribute the Source Code, and cite the Original work.

Basically this is open-source. Use it if you find it useful, and enrich it.
If you do produce new methods, please send them back to me so that they are added in the software and thus benefit to the community.
A number of additions, included in the software, where obtained from the Matlab Central contributions, and are BSD licensed.

Matlab is a registered trademark of The Mathworks Inc. Related software (e.g.  Matlab Compiler Runtime and Matlab) are covered by specific licenses.

Project cost

Full statistics for the project development can be obtained from its Ohloh project page.

I am currently the only developer of this project, which has been slowly designed for 10 years before writting the iFit basic project architecture. An initial prototype, specnd, was written earlier in years 2003-2004, then re-written from scratch with some of the current design principles in 2006 by Y. Debab [trainee at ILL] and me. The final project contains about 55000 lines of code (as of May 10th, 2011). About 10000 lines of code are contributed form other authors (see credits list below).

CodeBase Analysis (number of lines of code) on July, 2013 (release 1.4)
@iData 17839
Loaders 14583
Optimizers 4340 (+8442 contributed)
Models and Scripts
3476 (+52407 from SASfit and CrysFML)
Applications 3978 (+6266 for ResLibCal)
51 kLOC (written for iFit)
123 kLOC
21 kLOC
CoCoMo analysis <http://en.wikipedia.org/wiki/COCOMO> for 'Organic' project (excluding the contributed code in Optimizers)
KLOC =  51; ab =  2.4; bb =  1.05; cb =  2.5; db =  0.38;
Effort Applied 149 [months-year] E=ab*KLOC^bb
Development Time 16.7 [months] D=cb*E^db
People required 8.9 [count] E/D
Estimated Cost 489 [k$]

Note: This clearly shows that I can work as 9 guys in a row, and I'm dramatically under-paid. In fact I estimate I have worked about a total of one man-year on iFit over the last ten years.

Links to other related projects


Most of contributions where extracted from Matlab Central, and are thus BSD licensed. Optimization routines have been adapted to match the Matlab fminsearch syntax.

Sliceomatic by Eric Ludlam <eludlam@mathworks.com>
(Matlab Central)
is used as a plotter for 3D volume data, BSD license
fscatter3 by Felix Morsdorf, Jan 2003, Remote Sensing Laboratory Zuerich
used in plot, BSD license
vol3d by Joe Conti, 2004, Oliver Woodford 2011
used in plot, BSD license
genopt by Douglas M. Schwarz 2006
used in iData binary operators, BSD license
hPSO by Alexandros Leontitsis leoaleq@yahoo.com Ioannina, Greece 2004
used in fminswarmhybrid and fminswarm, no license
modified to handle a no-hybrid optimization (pure swarm in fminswarm)
Simplex by F. Sigworth, 15 March 2003, S. H. Heinemann, 1987 and M. Caceci and W. Cacheris, Byte, p. 340, May 1984.
used in fminsimplex, BSD license
powell by Argimiro R. Secchi (arge@enq.ufrgs.br) 2001
used in fminpowell, no license
ossrs by Sheela V. Belur (sbelur@csc.com) 1998
used in fmingradrand, BSD license
ga/gaconstrain by Javad Ivakpour javad7@gmail.com, May 2006
used in fminga, no license
cmaes by Nikolaus Hansen, 2001-2007. e-mail: hansen@bionik.tu-berlin.de
used in fmicmaes (CMA-ES), LGPL
solvopt by Alexei Kuntsevich and Franz Kappel , Graz (Austria) 1997
used in fminralg, no license
hooke by Kelley, 1998, Iterative Methods for Optimization, SIAM Frontier in Applied Mathematics 18
used in fminhooke, SIAM
imfil by Kelley, 1998, Iterative Methods for Optimization, SIAM Frontier in Applied Mathematics 18
used in fminimfil, SIAM
PSO by Brecht Donckels, BIOMATH, brecht.donckels@ugent.be 2006
used in fminpso, GPL
sce and SIMPSA by Brecht Donckels, BIOMATH, brecht.donckels@ugent.be 2006
used in fminsce and fminsimpsa, GPL
LMFsolve by Miroslav Balda, balda AT cdm DOT cas DOT cz 2009
used in fminlm, BSD license
netcdf by Paul Spencer, 2007
used as netCDF importer in Loaders, BSD license
plot2svg by  Juerg Schwizer, 22-Jan-2006
used as SVG exporter in Loaders, BSD license
pmedf_read and pmedfwrite by Petr Mikulik, Masaryk University, Brno, 11.8.2010
used in iLoad and iData/saveas, GPL
export3Dline2VTK (xyz line), exportTriangulation2VTK (2D surface) from David Gingras, January 2009
used in iData/saveas VTK, BSD license
writeVTK (3D object) by Tim 24 Mar 2009
used in iData/saveas VTK, no license
anneal by Joachim Vandekerckhove, 2006
use in fminanneal, BSD license
bfgswopt by Kelley, 1998, Iterative Methods for Optimization, SIAM Frontier in Applied Mathematics 18
used in fminbfgs, SIAM
ntrust by Kelley, 1998, Iterative Methods for Optimization, SIAM Frontier in Applied Mathematics 18
used in fminnewton, SIAM
ukfopt by Yi Cao at Cranfield University, 08 January 2008
used in fminkalman, BSD license
buscarnd by Argimiro R. Secchi (arge@enq.ufrgs.br) and Giovani Tonel(giovani.tonel@ufrgs.br) on September 2006
used in fminrand, no license
ReadINX by J. Ollivier (ollivier@ill.eu) 2007
used as INX file importer.
cbfread, speread and marread by Oliver Bunk (oliver.bunknull@pnullsi.ch) 2011
used as Roper/SPE, MAR/TIFF and CBF/imgCIF importer, PSI
fitswrite by R. G. Abraham, Institute of Astronomy, Cambridge University (abraham@ast.cam.ac.uk) 1999
used as FITS exported (save), nolicense
histcn by Bruno Luong (brunoluong@yahoo.com) Aug 25th 2011
used to build histograms from event data sets (accumarray/hist), BSD license
rndread from cad2matdemo by Don Riley Jun 2003
used to read STL ascii files with colors, BSD license
import_stl_fast by Eric Trautmann 31 Mar 2011
used to read STL ascii files with colors, BSD license
stlread by Francis Esmonde-White, May 2010
used to read STL binary files, BSD license
figure2xhtml by Dirk-Jan Kroon, Jul 2011
used in iData/save for X3D/XHTML export, BSD license
uiinspect and findjobj by Y. Altman, Dec 2007
used in ifit standalone as propedit/inspect replacement, BSD license
sifread by Leutenegger November 2006, updated Uli Klessinger 18 Jun 2012
used in Loaders to import SIF files, BSD license
adsc_read by Gil Toombes, 2004
used to import ADSC X-ray CCD image, no license
PDB_geometry by Gil Toombes, 2004
used as file importer and I(q) generator, no license
SASfit from J. Kohlbrecher and I. Bressler, PSI, 2006-2012
used to define a number of structure factors and small angle scattering form factors, GPL3
tom_mrcread from Wolfgang Baumeister (TOM Matlab toolbox), 2008
used to read MRC electron density map files
CrysFML by Juan Rodriguez-Carvajal and Javier Gonzalez-Platas, ILL and ULL, Tenerife, Spain
used to build a powder/Laue Rietveld model, GPL3
ResLib by A. Zheludev, using especially ResMat, ResMatS and ResPlot3D
used in ResLibCal, no license
ResCal5 by (A. Tennant and D. Mc Morrow), using especially rc_cnmat, rc_popma, rc_projs
used in ResLibCal, GPL
Res3ax (J. Ollivier), using res3ax5, no license
ResCal by Hargreave,Hullah,1979, ported into vTAS_view (A. Bouvet/A. Filhol)
used in ResLibCal, no license
yaml by Kota Yamaguchi 2011 <kyamagu@cs.stonybrook.edu>
used to read/write yaml/json, BSD and Apache2 license
struct2xml by W. Falkena, ASTI, TUDelft, 27-08-2010
used to write XML files, BSD license
mlabwrap by Alexander Schmolck and Vivek Rathod 2003-20011, with contribution from Dani Valevski 2011
used to wrap iFit for Python. MIT license
json4mat by Jonas Almeida, April 2010
used for I/O with JSON format, BSD license
DOSYToolbox by Mathias Nilsson, 2008 and matNMR by Jacco van Beek, 2009
used for read some NMR data sets (Bruker/WinNMR, Varian, JEOL), no license
smoothn, inpaintn otsu and resize by Damian Garcia 2010
used for smoothing and rebinning data sets (discrete cosine transform based), no license
<http://www.biomecardio.com/matlab/> and http://www.mathworks.com/matlabcentral/fileexchange/27994-inpaint-over-missing-data-in-1-d--2-d--3-d--n-d-arrays
Garcia D, Robust smoothing of gridded data in one and higher dimensions with missing values. Comput Statist Data Anal, 2010;54:1167-1178
Narasimha M. et al, On the computation of the discrete cosine transform, IEEE Trans Comm, 26, 6, 1978, pp 934-936.
Wang G, Garcia D et al. A three- dimensional gap filling method for large geophysical datasets: Application to global satellite soil moisture observations. Environ Modell Softw, 2012;30:139-142.
wtc-r16 by Grinsted, A. 2004
used for the continuous wavelet transform, kind of BSD
Grinsted, A., Moore, J.C., Jevrejeva, S. (2004) Application of the cross wavelet transform and wavelet coherence to geophysical time series, Nonlin. Processes Geophys., 11, 561-566, doi:10.5194/npg-11-561-2004.
Wavelet software was provided by C. Torrence and G. Compo, and is available at URL: http://paos.colorado.edu/research/wavelets/
Fast serialize/deserialize by Christian Kothe (2012)
used for dramatic improvement when saving/loading objects from MAT, BSD license
Igor Pro file format (ibw) to matlab variable by Jakub Bialek (2013)
used to read Igor pro Wave files, BSD license
Fast segmentation of N-dimensional grayscale images by Anton Semechko (2013)
used for k-means method, BSD license
Read Wavefront Obj files by Dirk-Jan Kroon (2010)
used in iLoad/read_obj, BSD license
M2HTML Documentation System for Matlab in HTMLby G. Flandin (2013)
used to generate techdoc, GPL3
Read LabView LVM and TDMS files by M. A. Hopcroft (2008) , Jim Hokanson (2011), Brad Humphreys (2013)
used in iLoad/read_lvm and read_tdms, BSD
Read Bruker OPUS files by A. Silakov Kazan viewer 2009
used iLoad/read_opus, BSD
LLB TAS files by B. Hennion
used in iLoad/read_llb_tas, no license
adapted from old fortran code (software: wf, routines convasc_C, convasc_D, convasc_S, convdat, read_fich)
stlwrite by Sven Holcombe, 2011
used in iData/saveas, BSD
vasplab by Max Radin, 2012
used in Models/sqw_phon, BSD and import_poscar
stochiometry-tools by Jeff Kantor, 2010
used in Models/sqw_phon, BSD
restore_idl by Charles Pelizzari, 2013
used in iLoad/read_idl, BSD
vtkwrite by Joe Yeh 2015
used in iData/save, BSD
WriteMRC by Fred Sigworth, 2010
used in iData/save, BSD
ImportAgilent and ImportThermo by James Dillon, 2014
used in iLoad, MIT
Import_XYZ in NanoVis by G. Romano, 2008
used in iLoad, BSD
Copy Paste by Yvan Lengwile, Jun 2010
used in miFit, BSD
xml2struct by Wouter Falkena, 2010
used in iLoad, BSD
SpinW by S. Toth, 2015
used in Models, GPL
S. Toth and B. Lake, J. Phys.: Condens. Matter 27, 166002 (2015).
GWMCMC by A. Grinsted, 2015
used in Optimizers
S. Toth and B. Lake, J. Phys.: Condens. Matter 27, 166002 (2015).
Horace by Toby Perring, Russell Ewings, Alex Buts, Joost van Duijn, Ibon Bustinduy, Dean Whittaker 2007-2015
used in iLoad, GPL
x3mesh by B. Irving 2013
used in iData/save to x3d BSD
dndcontrol by Maarten van der Seijs 2015
used in miFit to allow Drag-n-Drop, BSD
TextEdit by Jorge De Los Santos 2014
used in miFit and standalone as a simple text editor, BSD
PHON by D. Alfe
used in Models/sqw_phonons with QuantumEspresso, BSD
readNPY by C. Rossant. 2016
used in Loaders, BSD
exportToPPTX by Stefan Slonevskiy. 2017
used in iData/save, BSD
mesh2kml by Serge. 2017
used in iData/save, BSD

sort_nat by Douglas Schwarz. 2008
used in iLoad, BSD
linecut by Patrick Maher. 2014
used in slice, no license
SDF_import by Justin Dinale 27 May 2018.
used in read_sdf, BSD
SpinWave by Sylvain Petit 2011-2018 (c) LLB.
used in sqw_spinwave

E.Farhi - iFit Credits - Nov. 27, 2018 $Revision: 1266 $ - back to Main iFit Page ILL,
          Grenoble, France <www.ill.eu>