iFit: Credits and Contributions


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


Credits

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.

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

Licensing

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
@iFunc
4912
Loaders 14583
Optimizers 4340 (+8442 contributed)
Models and Scripts
3476 (+52407 from SASfit and CrysFML)
Applications 3978 (+6266 for ResLibCal)
TOTAL
51 kLOC (written for iFit)
Contributed
123 kLOC
Docs
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$]
E/D*55

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

Contributions

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
<http://www.mathworks.com/matlabcentral/fileexchange/764>
fscatter3 by Felix Morsdorf, Jan 2003, Remote Sensing Laboratory Zuerich
used in plot, BSD license
<http://www.mathworks.com/matlabcentral/fileexchange/2993-fscatter3-m>
vol3d by Joe Conti, 2004, Oliver Woodford 2011
used in plot, BSD license
<http://www.mathworks.com/matlabcentral/fileexchange/4927-vol3d-m-vol3dtool-m>
<http://www.mathworks.com/matlabcentral/fileexchange/22940-vol3d-v2>
genopt by Douglas M. Schwarz 2006
used in iData binary operators, BSD license
<http://www.mathworks.com/matlabcentral/fileexchange/10333-generalized-array-operations>
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)
<http://www.mathworks.com/matlabcentral/fileexchange/6497-hybrid-particle-swarm-optimization>
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
<http://www.mathworks.fr/matlabcentral/fileexchange/4317-state-machine-simplex-minimizer>
powell by Argimiro R. Secchi (arge@enq.ufrgs.br) 2001
used in fminpowell, no license
<http://www.mathworks.com/matlabcentral/fileexchange/15072-unconstrained-optimization-using-powell>
ossrs by Sheela V. Belur (sbelur@csc.com) 1998
used in fmingradrand, BSD license
<http://www.mathworks.com/matlabcentral/fileexchange/100-ossrs>
ga/gaconstrain by Javad Ivakpour javad7@gmail.com, May 2006
used in fminga, no license
<http://www.mathworks.com/matlabcentral/fileexchange/11317-genetic-algorithm-performance>
cmaes by Nikolaus Hansen, 2001-2007. e-mail: hansen@bionik.tu-berlin.de
used in fmicmaes (CMA-ES), LGPL
<http://www.lri.fr/~hansen/cmaesintro.html>
solvopt by Alexei Kuntsevich and Franz Kappel , Graz (Austria) 1997
used in fminralg, no license
<http://www.uni-graz.at/imawww/kuntsevich/solvopt/index.html>
hooke by Kelley, 1998, Iterative Methods for Optimization, SIAM Frontier in Applied Mathematics 18
used in fminhooke, SIAM
<http://www.siam.org/books/kelley/fr18/index.php>
imfil by Kelley, 1998, Iterative Methods for Optimization, SIAM Frontier in Applied Mathematics 18
used in fminimfil, SIAM
<http://www.siam.org/books/kelley/fr18/index.php>
PSO by Brecht Donckels, BIOMATH, brecht.donckels@ugent.be 2006
used in fminpso, GPL
<http://biomath.ugent.be/~brecht/downloads.html>
sce and SIMPSA by Brecht Donckels, BIOMATH, brecht.donckels@ugent.be 2006
used in fminsce and fminsimpsa, GPL
<http://biomath.ugent.be/~brecht/downloads.html>
LMFsolve by Miroslav Balda, balda AT cdm DOT cas DOT cz 2009
used in fminlm, BSD license
<http://www.mathworks.com/matlabcentral/fileexchange/17534-lmfnlsq-solution-of-nonlinear-least-squares>
netcdf by Paul Spencer, 2007
used as netCDF importer in Loaders, BSD license
<http://www.mathworks.com/matlabcentral/fileexchange/15177-netcdf-reader>
plot2svg by  Juerg Schwizer, 22-Jan-2006
used as SVG exporter in Loaders, BSD license
<http://www.mathworks.com/matlabcentral/fileexchange/7401-scalable-vector-graphics-svg-export-of-figures>
pmedf_read and pmedfwrite by Petr Mikulik, Masaryk University, Brno, 11.8.2010
used in iLoad and iData/saveas, GPL
<http://www.sci.muni.cz/~mikulik/Soft4Synchro.html>
export3Dline2VTK (xyz line), exportTriangulation2VTK (2D surface) from David Gingras, January 2009
used in iData/saveas VTK, BSD license
<http://www.mathworks.com/matlabcentral/fileexchange/22602-export-triangulation-to-paraview>
<http://www.mathworks.com/matlabcentral/fileexchange/22603-export-3d-line-to-paraview>
writeVTK (3D object) by Tim 24 Mar 2009
used in iData/saveas VTK, no license
<http://www.mathworks.com/matlabcentral/fileexchange/23416-writetovtk>
anneal by Joachim Vandekerckhove, 2006
use in fminanneal, BSD license
<http://www.mathworks.com/matlabcentral/fileexchange/10548>
bfgswopt by Kelley, 1998, Iterative Methods for Optimization, SIAM Frontier in Applied Mathematics 18
used in fminbfgs, SIAM
<http://www.siam.org/books/kelley/fr18/index.php>
ntrust by Kelley, 1998, Iterative Methods for Optimization, SIAM Frontier in Applied Mathematics 18
used in fminnewton, SIAM
<http://www.siam.org/books/kelley/fr18/index.php>
ukfopt by Yi Cao at Cranfield University, 08 January 2008
used in fminkalman, BSD license
<http://www.mathworks.com/matlabcentral/fileexchange/18217-learning-the-unscented-kalman-filter>
buscarnd by Argimiro R. Secchi (arge@enq.ufrgs.br) and Giovani Tonel(giovani.tonel@ufrgs.br) on September 2006
used in fminrand, no license
<http://www.mathworks.com/matlabcentral/fileexchange/12776-ramdomic-search>
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
<http://www.psi.ch/sls/csaxs/software>
fitswrite by R. G. Abraham, Institute of Astronomy, Cambridge University (abraham@ast.cam.ac.uk) 1999
used as FITS exported (save), nolicense
<http://www.mathworks.com/matlabcentral/fileexchange/122>
histcn by Bruno Luong (brunoluong@yahoo.com) Aug 25th 2011
used to build histograms from event data sets (accumarray/hist), BSD license
<http://www.mathworks.com/matlabcentral/fileexchange/23897-n-dimensional-histogram>
rndread from cad2matdemo by Don Riley Jun 2003
used to read STL ascii files with colors, BSD license
<http://www.mathworks.com/matlabcentral/fileexchange/3642-cad2matdemo-m>
import_stl_fast by Eric Trautmann 31 Mar 2011
used to read STL ascii files with colors, BSD license
<http://www.mathworks.com/matlabcentral/fileexchange/30923-fast-stl-import-function>
stlread by Francis Esmonde-White, May 2010
used to read STL binary files, BSD license
<http://www.mathworks.com/matlabcentral/fileexchange/29906-binary-stl-file-reader>
figure2xhtml by Dirk-Jan Kroon, Jul 2011
used in iData/save for X3D/XHTML export, BSD license
<http://www.mathworks.com/matlabcentral/fileexchange/32207-matlab-3d-figure-to-3d-xhtml>
uiinspect and findjobj by Y. Altman, Dec 2007
used in ifit standalone as propedit/inspect replacement, BSD license
<http://www.mathworks.com/matlabcentral/fileexchange/17935>
sifread by Leutenegger November 2006, updated Uli Klessinger 18 Jun 2012
used in Loaders to import SIF files, BSD license
<http://www.mathworks.com/matlabcentral/fileexchange/11224-andor-sif-image-reader>
adsc_read by Gil Toombes, 2004
used to import ADSC X-ray CCD image, no license
<http://bigbro.biophys.cornell.edu/~toombes/Software/ADSC_Detectors_Using_Spec/>
PDB_geometry by Gil Toombes, 2004
used as file importer and I(q) generator, no license
<http://bigbro.biophys.cornell.edu/~toombes/Software/PDB_SAXS/>
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
<http://kur.web.psi.ch/sans1/SANSSoft/sasfit.html>
tom_mrcread from Wolfgang Baumeister (TOM Matlab toolbox), 2008
used to read MRC electron density map files
<http://www.biochem.mpg.de/en/rd/baumeister/tom_e/>
CrysFML by Juan Rodriguez-Carvajal and Javier Gonzalez-Platas, ILL and ULL, Tenerife, Spain
used to build a powder/Laue Rietveld model, GPL3
<http://www.ill.eu/sites/fullprof/php/programs24b7.html>
ResLib by A. Zheludev, using especially ResMat, ResMatS and ResPlot3D
used in ResLibCal, no license
<http://www.neutron.ethz.ch/research/resources/reslib>
ResCal5 by (A. Tennant and D. Mc Morrow), using especially rc_cnmat, rc_popma, rc_projs
used in ResLibCal, GPL
<http://www.ill.eu/en/instruments-support/computing-for-science/cs-software/all-software/matlab-ill/rescal-for-matlab/>
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
<http://www.ill.eu/instruments-support/computing-for-science/cs-software/all-software/pkfit-and-filing/macos9-vms-linux/pkfitvmstutorial/>
yaml by Kota Yamaguchi 2011 <kyamagu@cs.stonybrook.edu>
used to read/write yaml/json, BSD and Apache2 license
<http://www.cs.sunysb.edu/~kyamagu/software/yaml/>
struct2xml by W. Falkena, ASTI, TUDelft, 27-08-2010
used to write XML files, BSD license
<http://www.mathworks.com/matlabcentral/fileexchange/28639-struct2xml>
mlabwrap by Alexander Schmolck and Vivek Rathod 2003-20011, with contribution from Dani Valevski 2011
used to wrap iFit for Python. MIT license
<http://mlabwrap.sourceforge.net/>
json4mat by Jonas Almeida, April 2010
used for I/O with JSON format, BSD license
<http://www.mathworks.com/matlabcentral/fileexchange/27169-json4mat>
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
<http://dosytoolbox.chemistry.manchester.ac.uk>
<http://matnmr.sourceforge.net/>
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
<http://noc.ac.uk/using-science/crosswavelet-wavelet-coherence>
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
<https://www.mathworks.com/matlabcentral/fileexchange/34564-fast-serialize-deserialize>
Igor Pro file format (ibw) to matlab variable by Jakub Bialek (2013)
used to read Igor pro Wave files, BSD license
<http://www.mathworks.com/matlabcentral/fileexchange/42679-igor-pro-file-format-ibw-to-matlab-variable>
Fast segmentation of N-dimensional grayscale images by Anton Semechko (2013)
used for k-means method, BSD license
<http://www.mathworks.com/matlabcentral/fileexchange/41967-fast-segmentation-of-n-dimensional-grayscale-images>
Read Wavefront Obj files by Dirk-Jan Kroon (2010)
used in iLoad/read_obj, BSD license
<http://www.mathworks.com/matlabcentral/fileexchange/27982-wavefront-obj-toolbox>
M2HTML Documentation System for Matlab in HTMLby G. Flandin (2013)
used to generate techdoc, GPL3
<http://www.artefact.tk/software/matlab/m2html/>
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
<http://www.mathworks.com/matlabcentral/fileexchange/19913-lvm-file-import>
<http://www.mathworks.com/matlabcentral/fileexchange/30023-tdms-reader>
<http://www.mathworks.com/matlabcentral/fileexchange/44206-converttdms--v10->
Read Bruker OPUS files by A. Silakov Kazan viewer 2009
used iLoad/read_opus, BSD
<https://sites.google.com/site/silakovalexey/kazan-viewer/>
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
<http://www.mathworks.com/matlabcentral/fileexchange/20922-stlwrite-filename--varargin->
vasplab by Max Radin, 2012
used in Models/sqw_phon, BSD and import_poscar
<http://www.mathworks.com/matlabcentral/fileexchange/36836-vasplab>
stochiometry-tools by Jeff Kantor, 2010
used in Models/sqw_phon, BSD
<http://www.mathworks.com/matlabcentral/fileexchange/29774-stoichiometry-tools>
restore_idl by Charles Pelizzari, 2013
used in iLoad/read_idl, BSD
<http://jp.mathworks.com/matlabcentral/fileexchange/43899-restore-idl>
vtkwrite by Joe Yeh 2015
used in iData/save, BSD
<http://www.mathworks.com/matlabcentral/fileexchange/47814-export-3d-data-to-paraview-in-vtk-legacy-file-format>
WriteMRC by Fred Sigworth, 2010
used in iData/save, BSD
<http://www.mathworks.com/matlabcentral/fileexchange/27021-imagic--mrc-and-dm3-file-i-o>
ImportAgilent and ImportThermo by James Dillon, 2014
used in iLoad, MIT
<http://fr.mathworks.com/matlabcentral/fileexchange/47696-chromatography-toolbox>
Import_XYZ in NanoVis by G. Romano, 2008
used in iLoad, BSD
<http://www.mathworks.com/matlabcentral/fileexchange/18233-nanovis--molecular-visualizer>
Copy Paste by Yvan Lengwile, Jun 2010
used in miFit, BSD
<https://www.mathworks.com/matlabcentral/fileexchange/28016-straightforward-copy-and-paste-functions>
xml2struct by Wouter Falkena, 2010
used in iLoad, BSD
<http://fr.mathworks.com/matlabcentral/fileexchange/28518-xml2struct>
SpinW by S. Toth, 2015
used in Models, GPL
<https://github.com/tsdev/spinw>
S. Toth and B. Lake, J. Phys.: Condens. Matter 27, 166002 (2015).
GWMCMC by A. Grinsted, 2015
used in Optimizers
<https://github.com/tsdev/spinw>
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
<http://horace.isis.rl.ac.uk/Main_Page>
x3mesh by B. Irving 2013
used in iData/save to x3d BSD
<http://uk.mathworks.com/matlabcentral/fileexchange/40942-plot-mesh-as-interactive-html>
dndcontrol by Maarten van der Seijs 2015
used in miFit to allow Drag-n-Drop, BSD
<https://fr.mathworks.com/matlabcentral/fileexchange/53511-drag---drop-functionality-for-java-gui-components>
TextEdit by Jorge De Los Santos 2014
used in miFit and standalone as a simple text editor, BSD
<http://fr.mathworks.com/matlabcentral/fileexchange/47614-textedit>

PHON by D. Alfe
used in Models/sqw_phonons with QuantumEspresso, BSD
<http://www.homepages.ucl.ac.uk/~ucfbdxa/phon/>



E.Farhi - iFit Credits - Mar. 22, 2017 $Revision: 1266 $ - back to Main iFit Page ILL,
          Grenoble, France <www.ill.eu>