MediaWiki API result

This is the HTML representation of the JSON format. HTML is good for debugging, but is unsuitable for application use.

Specify the format parameter to change the output format. To see the non-HTML representation of the JSON format, set format=json.

See the complete documentation, or the API help for more information.

{
    "batchcomplete": "",
    "continue": {
        "gapcontinue": "Reproducible_Documents",
        "continue": "gapcontinue||"
    },
    "warnings": {
        "main": {
            "*": "Subscribe to the mediawiki-api-announce mailing list at <https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> for notice of API deprecations and breaking changes."
        },
        "revisions": {
            "*": "Because \"rvslots\" was not specified, a legacy format has been used for the output. This format is deprecated, and in the future the new format will always be used."
        }
    },
    "query": {
        "pages": {
            "199": {
                "pageid": 199,
                "ns": 0,
                "title": "Release Notes",
                "revisions": [
                    {
                        "contentformat": "text/x-wiki",
                        "contentmodel": "wikitext",
                        "*": "==Release 3.0 (2019-09-09)==\n\n===Additions and enhancements===\n\nTo the reproducible documents collection:\n\n* tccs/fwiseislet: Full-waveform inversion using seislet regularization (Xue, Zhu, and Fomel)\n* tccs/merge: Matching and merging high-resolution and legacy seismic images (Greer and Fomel)\n* tccs/sobel: Plane-wave Sobel attribute for discontinuity enhancement in seismic images (Phillips and Fomel)\n* tccs/t2dweak: Fast time-to-depth conversion and interval velocity estimation in the case of weak lateral variations (Sripanich and Fomel)\n* tccs/elas: Recursive integral time extrapolation of elastic waves using low-rank symbol approximation (Sun, Fomel, Sripanich, and Fowler)\n* data/marmousi2mp: 2D modeling and basic processing with Madagascar (Thongsang, Jiang, Li, and Schleicher)\n* tccs/eseis: EMD-seislet transform (Chen and Fomel)\n* jlu/txsopf: Streaming orthogonal prediction filter in $t$-$x$ domain for random noise attenuation (Liu and Li)\n* jlu/gvdseisint: Seismic data interpolation using generalised velocity\u2010dependent seislet transform (Liu, Zhang, and Liu)\n* tccs/acrossfault: Predictive painting across faults (Xue, Wu, and Fomel)\n* tccs/sparse: Least-squares path-summation diffraction imaging using sparsity constraints (Merzlikin, Fomel, and Sen)\n* tccs/gmresq: Q-compensated least-squares reverse time migration using low-rank one-step wave extrapolation (Sun, Fomel, Zhu, and Hu)\n* tccs/welllogs: Missing log data interpolation and semiautomatic seismic well ties using data matching techniques (Bader, Wu, and Fomel)\n* tccs/fraclapl: Viscoacoustic modeling and imaging using low-rank approximation (Sun, Zhu, and Fomel)\n\n\nTo SCons:\n\n* Upgraded to scons-3.0.5\n\nTo documentation:\n\nTo APIs:\n\nTo the Python package:\n\n* Partial upgrade for compatibility with Python 3\n\nTo programs:\n\n* user/zgeng: New contributor (Zhicheng Geng)\n* sfmatplotlib: plotting with matplotlib\n* user/sgreer: New contributor (Sarah Greer)\n* strip= parameter in sfdd\n* sfbargraph: bar plot\n\n===Bug fixes===\n\nIn the reproducible documents collection:\n\nIn documentation:\n\nIn APIs:\n\nIn the Python package:\n\nIn programs:\n\nIn the build system:\n\n===Changes in defaults and interfaces===\n\n\n==Release 2.0 (2017-07-08)==\n\n===Additions and enhancements===\n\nTo the reproducible documents collection:\n\n* xjtu/mcaseislet: Seislet-based morphological component analysis using scale-dependent exponential shrinkage (Yang and Fomel)\n* tccs/aii: Structure-constrained relative acoustic impedance using stratigraphic coordinates (Karimi)\n* jlu/riesz: Seismic dip estimation based on the two-dimensional Hilbert transform and its application in random noise attenuation (Liu, Chen, Wang, Liu, Wang, and Zhang)\n* sep/balance: Iterative least-square inversion for amplitude balancing (Berlioux and Harlan)\n* sep/elliptic2: The double-elliptic approximation in the group and phase domains (Dellinger and Muir)\n* sep/sparse2: Test case for PEF estimation with sparse data II (Brown, Claerbout, and Fomel)\n* tccs/vscan: Velocity analysis using similarity-weighted semblance (Chen, Liu, and Chen)\n* tccs/group3: On anelliptic approximations for qP velocities in TI and orthorhombic media (Sripanich and Fomel)\n* tccs/dbortho: Iterative deblending with multiple constraints based on shaping regularization (Chen)\n* lju/vdseislet: Signal and noise separation in prestack seismic data using velocity-dependent seislet transform (Liu, Fomel, and Liu)\n* tccs/fraclapl: Viscoacoustic modeling and imaging using low-rank approximation (Sun, Zhu, and Fomel)\n* tccs/svmf: Deblending using a space-varying median filter (Chen)\n* tccs/shemd: Random noise attenuation by a selective hybrid approach using f-x empirical mode decomposition (Chen, Gan, Liu, Yuan, Zhang, and JIn) \n* tccs/orthogroll: Ground-roll noise attenuation using a simple and effective approach based on local bandlimited orthogonalization (Chen, Jiao, Ma, Chen, Zhou, and Gan)\n* tccs/intshape: Seismic data interpolation using nonlinear shaping regularization (Chen, Zhang, and Mo)\n* tccs/dsd: Double sparsity dictionary for seismic noise attenuation (Chen, Ma, and Fomel)\n* sep/geostat: Multiple realizations using standard inversion techniques (Clapp)\n* tongji/qswave: Simulating propagation of separated wave modes in general anisotropic media, Part II: qS-wave propagators (Cheng and Kang)\n* tccs/onestep: Lowrank one-step wave extrapolation for reverse-time migration (Sun, Fomel, and Ying)\n* tongji/decoupledpropagation: Simulating propagation of decoupled elastic waves using low-rank approximate mixed-domain integral operators for anisotropic media (Cheng, Alkhalifah, Wu, Zou, and Wang)\n* tccs/interval: Theory of interval traveltime parameter estimation in layered anisotropic media (Sripanich and Fomel)\n* tccs/decomp: Elastic wave-vector decomposition in heterogeneous anisotropic media (Sripanich, Fomel, Sun, and Cheng)\n* tccs/hyper3: 3D generalized nonhyperboloidal moveout approximation (Sripanich, Fomel, Stovas, and Hao)\n* tccs/pi: Analytical path-summation imaging of seismic diffractions (Merzlikin and Fomel)\n* tccs/ovc: Diffraction imaging and time-migration velocity analysis using oriented velocity continuation (Decker, Merzlikin, and Fomel)\n\nTo SCons:\n\n* splitting auxiliary inputs when split= involves 'omp' or 'mpi'\n* Upgraded to scons-2.5.1\n\nTo documentation:\n\nTo APIs:\n\n* name= parameter in File for Python API\n* Julia API\n\nTo the Python package:\n\nTo programs:\n\n* user/zdzhang: New contributor (Zhendong Zhang)\n* splitting auxiliary inputs in sfomp and sfmpi\n* set delrt in trace headers in sfsegywrite\n* header= parameter in sfcsv2rsf\n* user/kregimbal: New contributor (Kelly Regimbal)\n* user/dmerzlikin: New contributor (Dmitrii Merzlikin)\n* user/sbader: New contributor (Sean Bader)\n* char to int conversion in sfdd\n\n===Bug fixes===\n\nIn the reproducible documents collection:\n\n* Fixed links to the data files in the case of a non-default data server\n\nIn documentation:\n\n* Fixed file names in selfdocs\n\nIn APIs:\n\n* Fixed memory bug in stretch.c\n\nIn the Python package:\n\n* Fixed parsing of comments in Fortran-90 programs\n\nIn programs:\n\n* Fixed segmentation fault for sffft1 with no FFTW and no OMP\n* Fixed case n1 > n2 in sfsvd\n* Fixed join over a different axis in sfomp and sfmpi\n* Fixed mwt= parameter in sfconjgrad\n* Fixed half-order differentiation in sfslant\n* Fixed offset handling in sfinmo\n\nIn the build system:\n\n* Fixed installation of the gallery scripts\n* Improved configuration for Fortran-90 programs\n* Fixed Java API installation on Linux\n\n==Release 1.7 (2014-04-13)==\n\n===Additions and enhancements===\n\nTo the reproducible documents collection:\n\n* tccs/sglowrank: Lowrank seismic wave extrapolation on a staggered grid (Fang, Fomel, Du, and Hu)\n* xjtu/primer: A numerical tour of wave propagation (Yang)\n* Moved rsf/usp/data to data/freeusp/land and added elevation statics\n* tongji/lrmode: Fast algorithms for elastic-wave-mode separation and vector decomposition using low-rank approximation for anisotropic media (Cheng and Fomel)\n* tccs/deblend: Iterative deblending of simultaneous-source seismic data using seislet-domain shaping regularization (Chen, Fomel, and Hu)\n* tccs/time2depth2: A robust approach to time-to-depth conversion and interval velocity estimation from time migration in the presence of lateral velocity variations (Li and Fomel)\n* tccs/nmodeblend: Deblending using normal moveout and median filtering in common-midpoint gathers (Chen, Yuan, Jin, Chen, and Zhang)\n* tccs/synwav: Time-frequency analysis of seismic data using synchrosqueezing wavelet transform (Chen, Liu, Chen, Li, and Wang)\n* sep/txamo: The time and space formulation of azimuth moveout (Fomel and Biondi)\n* jlu/txyapf: Adaptive prediction filtering in t-x-y domain for random noise attenuation using regularized nonstationary autoregression (Liu, Liu, and Liu)\n* sep/shearer: Earthquake stacks at constant offset (Claerbout)\n* sep/super: A prospect for super resolution (Claerbout)\n* trip/asg: Acoustic staggered grid modeling in IWAVE (Symes)\n* tccs/synth: Carbonate reservoir characterization using seismic diffraction imaging (Decker, Janson, and Fomel)\n* sep/avo: Seismic AVO analysis of methane hydrate structures (Ecker and Lumley)\n* tccs/scan3: A fast algorithm for 3D azimuthally anisotropic velocity scan (Hu, Fomel, and Ying)\n* sep/passive: Passive seismic imaging applied to synthetic data (Rickett and Claerbout)\n* tccs/ortho: Random noise attenuation using local signal-and-noise orthogonalization (Chen and Fomel)\n* tccs/strat: Stratigraphic coordinates, a coordinate system tailored to seismic interpretation (Karimi and Fomel)\n* sep/aal: When is anti-aliasing needed in Kirchhoff migration? (Bevc and Lumley)\n* sep/pefmult: Multiple suppression using prediction-error filter (Sun)\n* xjtu/gpufwi: A graphics processing unit implementation of time-domain full-waveform inversion (Yang, Gao, and Wang)\n\nTo SCons:\n\n* Added SLURM support for running MPI jobs through SCons\n* Added usedatapath= in Fetch for placing downloaded data in DATAPATH by default\n* Upgraded to scons-2.3.4\n* Allow Fetch to run with top=None\n\nTo documentation:\n\nTo APIs:\n\nTo the Python package:\n\n* sfbatch: script for submitting jobs to a cluster queue system \n* Changed MPIRUN from a command-line option to a configure option\n* Updated sunrpc configuration for the current version of Cygwin on Windows\n* vpannotate: interactive wrapper for annotations with sfbox\n\nTo programs:\n\n* Added new color schemes (color= in sfgrey): lb (Light-Bartlein), gist_earth, spectral, seismic, owb (orange-white-black),  rwb (red-white-black), izoaz (isoluminant for azimuth data),  montag (spectral lightness rainbow) \n* sfipick: example Tkinter script for interactive picking\n* sfvelan: interactive velocity picking using matplotlib\n* Added x0= and mwt= parameters in sfconjgrad\n* Added griddash= parameter to stdplot\n* sflas2rsf: Convert LAS-2 well logs to RSF\n* Added segy= and desc= parameters to sfheaderattr\n* Renamed sfsvd sfpysvd and fixed sizes for output vectors\n* Enabled depth= option for sfgraph with lines\n* user/junyan: New contributor (Jun Yan)\n* Added inv= flag in sfheaderwindow\n* Added polyneg= flag in sfwiggle\n* Added key= and nkey= parameters to sfheadermath\n* sfcerf: complex error function\n* color scheme can be specified by file name\n\n===Bug fixes===\n\nIn the reproducible documents collection:\n\nIn documentation:\n\nIn APIs:\n\n* Fixed __array_wrap__ bug in Python API\n* Fixed bug in framenum with no label1 in stdplot\n* Fixed occassional nan generated in sf_randn_one_bm\n\nIn the Python package:\n\nIn programs:\n\n* Fixed output size bug in sfinttest1\n* Fixed memsize definition bug in sfrotate and sfreverse\n* Fixed handling of mask and offset files in sfnmo\n* Fixed memory allocation bug in sfkirmod_newton\n\nIn the build system:\n\n* Fixed MEXSUFFIX for 64-bit Macs\n* Added '.exe' suffix for python programs in Cygwin\n* Updated gdpen compilation for new versions of FFMPEG\n\n===Changes in defaults and interfaces===\n\n==Release 1.6 (2014-05-09)==\n\n===Additions and enhancements===\n\nTo the reproducible documents collection:\n\n* gallery: migration gallery\n* Moved jsg to tccs\n* tccs/buttefly: A fast butterfly algorithm for generalized Radon transforms (Hu, Fomel, Demanet, and Ying)\n* tccs/opwd: Omnidirectional plane-wave destruction (Chen, Fomel, and Lu)\n* tccs/specrecom: Automated spectral recomposition with application in stratigraphic interpretation (Cai, Fomel, and Zeng)\n* Moved sep/aniso to cwp/aniso\n* icp/sam2013gpushortestpath: Shortest path ray tracing on parallel GPU devices (Monsegny and Agudelo)\n* tccs/nar: Seismic data decomposition into spectral components using regularized nonstationary autoregression (Fomel)\n* tccs/dsrtomo: First-break traveltime tomography with the double-square-root eikonal equation (Li, Vladimirsky, and Fomel)\n* cup/rna2d: Random noise attenuation using f-x regularized nonstationary autoregression (Liu, Chen, Du, and Wu)\n* cup/rna3d: Noncausal f-x-y regularized nonstationary prediction filtering for random noise attenuation on 3D seismic data (Liu and Chen)\n* tccs/psp: A parallel sweeping preconditioner for heterogeneous 3D Helmholtz equations (Poulson, Engquist, Li, and Ying)\n* tccs/uncert: Structural uncertainty of time-migrated seismic images (Fomel and Landa)\n* osu/shalek: modeling examples from Kyle Shalek and Jeff Daniels\n* tccs/phase: Local skewness attribute as a seismic phase detector (Fomel and van der Baan)\n* tccs/optapert: Selecting an optimal aperture in Kirchhoff migration using dip-angle images (Klokov and Fomel)\n* Replaced most of Mathematica figures by Sage figures to improve reproducibility\n* tongji/qpwave: Simulating propagation of separated wave modes in general anisotropic media, Part I: qP-wave propagators (Cheng and Kang)\n* xtju/gpurtm: RTM using effective boundary saving: A staggered grid GPU implementation (Yang, Gao, and Wang)\n* tccs/emdpf: Random noise attenuation by f-x empirical mode decomposition predictive filtering (Chen and Ma)\n* Changes trip/iwave to trip/struct: IWAVE structure and basic use cases (Symes)\n\nTo SCons:\n\n* Experimental IPython notebook in book/rsf/rsf/test/test.ipynb\n* MKL check in configure only relevant for icc\n* Upgraded to scons-2.3.1\n\nTo documentation:\n\n* Added CITATION.txt file for the Madagascar paper in JORS.\n\nTo APIs:\n\n* Updated numpy API for compatibility with the latest version of numpy\n* Cast to float when writing data in Python API\n\nTo the Python package:\n\n* fftw (if present) is included in core libraries during compilation\n* Cygwin no longer provides libtirpc, removed it from configure \n* Added support to tikz figures in reproducible documents\n* Replaced -nojvm with -nodesktop for Matlab-generated figures\n* Added workdir= paremeter to Flow\n\nTo programs:\n\n* Added shift= parameter to sfkolmog\n* Added eps= parameter to sflsfit\n* user/fbroggin: New contributor (Filippo Broggini)\n* sfpef renamed sfhpef\n* sfpef (Wiener predictive error filtering) borrowed from SU's supef\n* Added color=x cubehelix color scheme in sfgrey and sfgrey3\n* Added inv= option to sfintbin\n* Added pclip= option to sfscale\n* user/jmonsegny: New contributor (Jorge Monsegny)\n* user/pyang: New contributor (Pengliang Yang)\n* creating rsfgee library in user/gee to avoid code duplication\n* added sfput-like behavior in sfwindow and sfpad\n* user/zhiguang: New contributor (Zhiguang Xue)\n* user/hwang: New contributor (Hui Wang)\n* user/ditthara: New contributor (Detchai Ittharat)\n\n===Bug fixes===\n\nIn the reproducible documents collection:\n\n* Fixed reproducibility issues in tccs/diffr/gom\n\nIn documentation:\n\nIn APIs:\n\n* Look for mex in matlab's directory to avoid confusion with other programs named mex\n* Fixed parallel.c for the case of less jobs than nodes\n* Added missing fflush in sf_simtab_input\n* Avoid taking log(0) in vp_optimal_scale\n* Fixed memory leak in gettmpdatapath in file.c\n* Fixed small memory leaks in getpar.c\n\nIn the Python package:\n\nIn programs:\n\n* sfbyte: \"clip\" determination when the first plane is zero \n* Fixed size definitions in sfinttest1\n* Fixed off-by-one bug in sfrickerfit\n* Avoid cropping of images by vplot2eps\n* Read the whole cube for finding contours in sfcontour3\n* Fixed shift by one in sfdespike\n* Fixed interact= bug in xtpen\n* Fixed the case of negative o1 in sfsegyheader\n\nIn the build system:\n\n* Set -fopenmp for linking with gcc\n* Fixed directory locations in pens/fonts\n* Fixed typo in the configure script\n* Fixed the case of RSFSRC set to a different directory\n* Fixed oglpen compilation on Cygwin\n\n===Changes in defaults and interfaces===\n\n==Release 1.5 (2013-07-24)==\n\n===Additions and enhancements===\n\nTo the reproducible documents collection:\n\n* jsg/fpwd: Accelerated plane-wave destruction (Chen, Fomel, and Lu)\n* swag/tau: Wavefield extrapolation in pseudodepth domain (Ma and Alkhalifah)\n* jsg/lfd: Lowrank finite-differences and lowrank Fourier finite-differences for seismic wave extrapolation in the acoustic approximation (Song, Fomel, and Ying)\n* sep/waverays: Wavefront construction using waverays (Urdaneta)\n* swag/itime: Automatic traveltime picking using the instantaneous traveltime (Saragiotis, Alkhalifah, and Fomel)\n* trip/test: Extended modeling in Madagascar (Liu and Symes)\n* uwa/geo2013ElasticModellingGPU: Solving 3D anisotropic elastic wave equations on parallel GPU devices (Weiss and Shragge)\n* jsg/eikods: Kirchhoff migration using eikonal-based computation of traveltime source-derivatives (Li and Fomel)\n* jsg/orthorhombic: Modeling of pseudo-acoustic P-waves in orthorhombic media with a lowrank approximation (Song and Alkhalifah)\n\nTo SCons:\n\n* Upgraded to scons-2.3.0\n\nTo documentation:\n\n* Selfdocs include links for programs of the month\n\nTo APIs:\n\n* Added m8r function for running Madagscar programs from MATLAB\n* If C++ compiler works, C++ interface is installed by default\n* added support for FFTW in cosft\n\nTo the Python package:\n\n* Added an ability to have list arguments in configure\n* Added MKL support in configure\n* Added selfdocs for placeholders in bldutil\n* Extended parallel split for sfomp and sfmpi\n* Disabled SSE check in configure\n\nTo programs:\n\n* Added scalebar= option for sfgraph with depth=\n* Added an ability to specify options for sfpen with SFPENOPTS\n* Added opt= parameter in sfspectra\n* sfpad2nextfastsize: wrapper for kiss_fft_next_fast_size so it can be called from scripts and SConstruct files. Python wrapper for it: rsf.user.sf.pad2nextfastsize()\n* Added forcebw= and force_raster options for pspen\n* Added snap= option for sffftwave2\n* Added frame numbers for movies made with sfgraph\n* Included lbfgs in user/sparse\n* user/fangg: new contributor (Gang Fang)\n* Added an ability to specify a colortable in a CSV file\n* user/luke: new contributor (Luke Decker)\n* Moved some programs from user/fomels to user/pwd\n* sfzoom: example Tkinter script for interactive zooming\n* sfsegyheader can take tfile= parameter for input trace headers\n* Extended join= option in sfomp and sfmpi to support adding (join=0)\n* user/seisinv: new contributor (Yujin Liu)\n* RVL package from Bill Symes and The Rice Inversion Project\n* iwave++ package from Bill Symes and The Rice Inversion Project\n* Moved iwave, rvl, and iwav++ to trip\n* sfheadermath works with integer input\n* user/zedong: new contributor (Zedong Wu)\n* add Misolr25.cc which is double precision version using lowrank \n* sfsegyheader: round-up for \"delrt\" and \"dt\" was fixed (aklokov)\n\n===Bug fixes===\n\nIn the reproducible documents collection:\n\nIn documentation:\n\n* Fixed nb= parameter in sfawefd2d and sfawefd3d\n\nIn APIs:\n\n* Fixed from_either bug in F90 API\n\nIn the Python package:\n\nIn programs:\n\n* Fixed bug with handling zero values in sfclip\n* Fixed incorrect data size bug in sffindmo\n* Fixed true colors in gdpen\n* Fixed parallel split in sfomp and sfmpi\n* Set o1= in sfsegyread\n* Fixed memsize= checking in sftransp\n* Fixed large-size limitation in sfpwspray2\n\nIn the build system:\n\n* Replaced WhereIs('python') with sys.executable\n* Check for OpenMP even at a single-CPU system\n* Use integer*8 in f77 examples\n* Fixed suitesparse configuration\n* Fixed missing _vp.h dependence in pens/main\n\n==Release 1.4 (2012-04-22)==\n\n===Additions and enhancements===\n\nTo the reproducible documents collection:\n\n* jsg/lowrank: Seismic wave extrapolation using lowrank symbol approximation (Fomel, Ying, and Song)\n* jsg/crs: Non-hyperbolic common reflection surface (Fomel and Kazinnik)\n* trip/iwave: Using IWAVE (Symes)\n* Viking Graben data moved to the public data server\n* sep/fat: Imaging complex structures with first-arrival traveltimes (Bevc)\n* sep/helft: Multi-dimensional Fourier transforms in the helical coordinate system (Rickett and Guitton)\n\nTo SCons:\n* Support for XQuartz on Macs - looking in /opt/X11 directories \n* np= parameter in Flow() for mpi programs\n* sfdocs generated for all \"pens\" in pens/main\n* pre-compilation of modules in book/Recipes\n* upgraded to scons-2.2.0\n\nTo documentation:\n* Self-doc is complete now for sfawefd2d and 3d\n\nTo APIs:\n* python API (m8r or rsf.api) is now always installed\n* tell and seek added to C++ API\n* added support for FFTW and PSP\n* shape() and reshape() methods in File class (python API) reversed for consistency with numpy\n\nTo the Python package:\n* added support for gnuplot figures in rsf.tex\n* added support for sage figures in rsf.tex\n\nTo programs:\n\n* sfsemblance: semblance over the specified axis\n* sflinear: linear 1-D interpolation\n* sfspike now optionally accepts stdin\n* iwave package from Bill Symes and The Rice Inversion Project\n* user/zone: new contributor (Yanadet Sripanich)\n* sfsegyheader creates delrt from o1\n* user/poulsonj: new contributor (Jack Poulson)\n* vpconvert  checks the existence of different pens and prefers gdpen to pngpen\n* sffft1, sffft3, sfspectra, sfspectra2: optional support for FFTW\n* oglpen stops movie on pressing 'n' or 'm', menu on left button on Macs\n* creating rsfpwd library in user/fomels to avoid code duplication\n* sfawefd2d and 3d: constant-density flag. Improved speed, memory\n* sfgraph: depth= option for colored symbols\n* sfcat and sfadd no longer have a limit on the number of files\n* user/chengjb: new contributor (Jiubing Cheng)\n* retired su2rsf and segy2rsf to avoid code duplication with suread and segyread\n* user/jsun: new contributor (Junzhe Sun)\n\n===Bug fixes===\n\nIn the reproducible documents collection:\n\nIn documentation:\n\nIn APIs:\n* Fixed settype bug in Python API\n* Fixed inpout selfdoc extraction for C++ programs\n\nIn the Python package:\n\n* Fixed \"scons test\" in suproj\n\nIn programs:\n\n* Fixed size limitation in sfclip2\n* Added x0 and y0 in sfstolt \n* Fixed installing the plplot driver with .driver_info extension\n\nIn the build system:\n* Fixed failed dependency on gendoc.h when installing pens\n\n===Changes in defaults and interfaces===\n\n* In sflwefd: *q1 and *q2 parameters become *qx and *qz, respectively\n\n==Release 1.3 (2012-04-22)==\n\n===Additions and enhancements===\n\nTo the reproducible documents collection:\n\n* jsg/reversible: A reversible transform for seismic data processing (Burnett and Ferguson) \n* sep/pyramid: The pyramid transform and its application to signal/noise separation (Sun and Ronen)\n* jsg/ffd: Fourier finite-difference wave propagation (Song and Fomel)\n* jsg/apefint: Seismic data interpolation beyond aliasing using regularized nonstationary autoregression (Liu and Fomel)\n* jsg/timefreq: Time-frequency analysis of seismic data using local attributes (Liu, Fomel, and Chen)\n* data/alaska: Open Data/Open Source: Seismic Unix scripts to process a 2D land line (Schleicher)\n* jsg/ltft: Seismic data analysis using local time-frequency decomposition (Liu and Fomel)\n\nTo SCons:\n\n* Upgraded to scons-2.1.0\n\nTo documentation:\n\n* Python API documented with Epydoc\n* Limited the number of USED IN examples displayed by selfdoc and man pages (25 by default, controled by -u parameter in sfdoc)\n* book/tutorial: A brief introduction to Madagascar (Jeff Godwin)\n* Added selfdoc for sfomp and sfmpi\n\nTo APIs:\n\n* librsfsegy / rsfsegy.h as a separate library\n\nTo the Python package:\n\n* an option for the user to overwrite the installed config.py with ./rsfcfg.py or ~/.rsfcfg.py\n\nTo programs:\n\n* sfgrey4: generate movie of 3-D cube plots.\n* sfungrad: phase unwrapping by least squares.\n* sfhistogram now takes integer input as well\n* sfhist2: 2-D float with integer or float inputs\n* in-core large-file (>2Gb) support in sfwindow and sftransp\n* sfsparsify: put nonzero elements of 2-D array into sparse form\n* sfmoveout: put spikes at an arbitrary moveout.\n* sfcconv: 1-D convolution with complex numbers.\n* sfpyramid: pyramid transform.\n* sfshapeagc: automatic gain control by shaping regularization.\n* modified sfsuwrite for consistency with sfsuread\n* user/chen: new contributor (Zhonghuan Chen)\n* sffoldplot: build a seismic fold map\n* tkvpconvert: GUI for vpconvert\n* user/rweiss: new contributor (Robin Weiss)\n* sfewefd2d_gpu: 2d FDTD wave equation with GPU\n* sfewefd3d_gpu: 3d FDTD wave equation with GPU\n* user/aklokov: new contributor (Alexander Klokov)\n* user/ediazp: new contibutor (Esteban Diaz)\n\n===Bug fixes===\n\nIn the reproducible documents collection:\n\nIn documentation:\n\n* Included previously undocumented parameters (dash,plotcol,plotfat) in stdplot.\n* Fixed selfdoc for Python scripts\n\nIn APIs:\n\nIn the Python package:\n* Hires Bounding Box detection in Mathematica plots\n* Location of config.py in configure.py \n* Prevent segfault when the input file is closed prematurely.\n\nIn programs:\n* Fixed sfpen (via dovplot) bug\n* Fixed sflosignoi bug\n* Fixed sfdots axis-positioning bug\n* Fixed sfmath crash when datapath was specified\n* Fixed handling of infinite values in sfgraph\n* Fixed handling of different output size in sfiwarp\n* Fixed sftransp off-core I/O bug \n\nIn the build system:\n* Fixed bug that resulted in BLAS/ATLAS-based programs to not install in Fedora\n* Eliminated hardcoded paths that made it impossible to package m8r\n* Workaround for SCons bug #1488 \n* Fixed MacPorts and Fink path detection for compilers other than gcc on Mac\n* Fixed bug preventing spaces in ./configure arguments\n* Fixed cfortran.h dependency in api/f77\n\n==Release 1.2 (2011-07-14)==\n\n===Additions and enhancements===\n\nTo the reproducible documents collection:\n\n* swag/anisogath: Angle gathers in wave-equation imaging for transversely isotropic media (Alkhalifah and Fomel) \n* jsg/agath: Theory of 3-D angle gathers in wave-equation seismic imaging (Fomel)\n* cwp/pept2011MicroearthquakeMonitoring: Micro-earthquake monitoring with sparsely-sampled data (Sava)\n* jsg/vc3: Azimuthally anisotropic 3D velocity continuation (Burnett and Fomel)\n* milano/taupvel: Velocity-independent tau-p moveout in a horizontally-layered VTI medium (Casasanta and Fomel)\n* swag/thetaScan: Traveltime approximations for transversely isotropic media with an inhomogeneous background (Alkhalifah)\n* cwp/geo2011WideAzimuthAngleDecomposition: Wide-azimuth angle gathers for wave-equation migration (Sava and Vlad)\n\nTo SCons:\n\n* New directory structure: documentation under $RSFROOT/share/doc/madagascar, other supplemental files under $RSFROOT/share/madagascar\n\nTo documentation:\n\n* Info from VERSION.txt being printed in man pages for all programs\n* Informative message at the end of successful global builds\n\nTo APIs:\n\n* Fetch, Movie, and other enhancements in Python API\n* Input class (can read int and float pars from stdin) in Python backup API\n* Added reading complex-valued data to rsf_read in Matlab API\n\nTo the Python package:\n\n* More intuitive interface for rsf.user.ivlad.run()\n* Expanded options for rsf.user.ivlad.exe()\n\nTo programs:\n\n* sfkdmig2d: 2-D Prestack Kirchhoff depth migration (borrowed from SU)\n* wanttitle= option in thplot\n* color=w periodic color table in grey and grey3\n* sfin accepts data from standard input\n* sfmath accepts sign() function\n* all= option in sfget\n* sfbar: separate program for creating scalebar data\n* sflorenz (generate Lorenz attractor)\n* sfcat/sfmerge accept order= parameter\n* user/xuxin\n\n===Bug fixes===\n\nIn the reproducible documents collection:\n\nIn documentation:\n* Fixed missing parameter documentation in stdplot\n\nIn APIs:\n\n* Fixed rsf_write to write complex-valued data\n* Enabled building of dynamic libraries\n\nIn the Python package:\n\nIn programs:\n\n* Fixed parameter-setting bug in sfstoltstretch\n* Fixed float-to-int truncation bug in sfdd triggered by Intel C Compiler 10\n* Fixed large-file-support bug in sfshot2cmp\n* Fixed plane#= bug is sfeikonal\n* Fixed error message bug in sfsegyheader\n\nIn the build system:\n* Madagascar now compiling with CC=icc LINKFLAGS=-static-intel\n\n==Release 1.1 (2011-01-18)==\n\n===Additions and enhancements===\n\nTo the reproducible documents collection:\n* rsf/bash: Vladimir Bashkardin's presentation at Houston-2010 \n* rsf/programming: Jeff Godwin's presentation at Houston-2010 \n* rsf/usp: Yang Liu's presentation at Houston-2010\n* \\published{} macro added to all published papers\n* sep/fractal: Modeling 3-D anisotropic fractal media (Chemingui)\n* sep/banana: Traveltime sensitivity kernels: Banana-doughnuts or just plain bananas? (Rickett)\n* swag/eikds: An eikonal based formulation for traveltime perturbation with respect to the source location (Alkhalifah and Fomel)\n* cwp/geo2008IsotropicAngleDomainElasticRTM: Isotropic angle-domain elastic reverse-time migration (Yan and Sava)\n* jsg/stackadcig: Stacking angle-domain common-image gathers for normalization of illumination (Liu et al.)\n* cwp/geo2009VTIModeSeparation: Elastic wave-mode separation for VTI media (Yan and Sava)\n* cwp/geo2009TTIModeSeparation: Elastic wave-mode separation for TTI media (Yan and Sava)\n* jsg/flat: Predictive painting of 3-D seismic volumes (Fomel)\n* jsg/oc3: OC-seislet: seislet transform construction with differential offset continuation (Liu and Fomel)\n* sep/lines: Random lines in a plane (Claerbout) \n* hansung/cgg: Conjugate guided gradient (CGG) method for robust inversion and its application to velocity-stack inversion (Ji)\n* sep/texture: Texture synthesis and prediction error filtering (Brown)\n* Grave directory for papers that are no longer reproducible\n\nTo SCons:\n* Upgraded to scons-2.0.1\n\nTo documentation:\n* Update to vplot man pages\n* This file (NEWS.txt)\n\nTo APIs:\n* New, improved Java API: Cleaner, independent from Mines JTK. Not compatible with the old API\n\nTo the Python package:\n* rsf.user.ivlad: chk_file_r, getppout, get1st functions\n* rsf.user.m8rex: WrongPath exception class\n* rsf.user.sf: attr function\n* rsf.version: info about the software version\n\nTo programs:\n* tkMadagascar (sfgui and sfbrowser)\n* sflmo (frequency-domain LMO)\n* sfcp - added functionality to act as a filter\n* sftaupmo - added functionality for effective/interval velocities\n* sfktmig (prestack time migration\n* sfrotate - added functionality for negative rotations\n* sfmedian (median on the first axis)\n* sfregr (linear regression)\n* sfsvd (SVD using scipy)\n* sfthreedcube (3D display using mayavi2)\n* sfiphase -added complex option\n* sfsensitivity (traveltime sensitivity kernels)\n* sfcltft (complex local time-frequency transform)\n* sfclpf (complex local prediction filter)\n* sfiwarp2 (inverse 2-D warping)\n* many new programs in user/lcasasan\n* user/jun\n\n===Bug fixes===\n\nIn the reproducible documents collection:\n* Cross-platform (Linux/Mac) solution in book/jsg/flat/*/SConstruct\n* Fixed program links in book/bei/fdm and book/bei/ft1\n* Fixed program links in book/gee/ajt and book/gee/hlx\n* High-resolution figures in book/gee/hlx\n\nIn documentation:\n* Update of html/txt/spec documentation and man pages triggered by changes in programs or examples through dependence on use.py\n* Show y and n for boolean parameters in F90 programs, instead of .true./.false.\n* Show y and n for boolean params in some Python programs instead of True/False (fix for some cases in which existing mechanism did not work) \n\nIn APIs:\n* Appropriate flags for compilation on OpenSolaris\n* Fixed memory leak in getpar.c\n* Fixed memory leak in llist.c\n* Improved accuracy of triangle smoothing\n* Updated numpy interface in m8r.i\n\nIn the Python package:\n* In rsf.user.ivlad (function ndims)\n* In rsf.user.ooio (init of class RSFheader)\n* CUDA configuration moved to configure.py\n\nIn programs:\n* sfbandpass\n* sfzcp\n* sfstretch - proper handling of half-offset\n* sfslant and sfvelcon - proper antialiasing\n\n==Release 1.0 (2010-07-23)==\n\nNo release notes for 1.0 or before\n\n==About this document==\n\nThis document is found both as a wiki page at\nhttp://www.ahay.org/wiki/Release_Notes , and under source version\ncontrol at https://github.com/ahay/src/blob/master/NEWS.txt . The repository\nversion is the definitive one. Before a release, the content of the\nlatest section of the wiki page and that of the corresponding part of\nNEWS.txt should be reconciled."
                    }
                ]
            },
            "77": {
                "pageid": 77,
                "ns": 0,
                "title": "Reproducibility",
                "revisions": [
                    {
                        "contentformat": "text/x-wiki",
                        "contentmodel": "wikitext",
                        "*": "[[Image:Reproducibility.jpg|right|Reproducibility is paramount in numerically-intensive sciences]]\n\n'''(written by I. Vlad)'''\n\n''\"At the end of the day, reproducibility is what separates science from superstition\" (S. Fomel)''\n\nMaking a numerical experiment reproducible means filing and documenting all data, source code and scripts used to produce the experimental results (figures, tables, graphs, etc). The filing and documentation is done such that the same results can be reproduced by an independent reviewer. In numerically-intensive sciences, it is possible to not only ''describe'' the experimental setup, but to actually reproduce the entire experiment. Paradoxically, the increase in computational complexity of the last decades meant that \"today, few published results are reproducible in any practical sense. To verify them requires almost as much effort as it took to create them originally.\" [3]\n\n=Why \"do\" reproducibility?=\n\n==Knowledge management==\n* The complexity of modern numerical experiments makes it necessary for the author himself to keep track meticulously of what he has done: \"In the mid 1980's, we noticed that a few months after completing a project, the researchers at our laboratory were usually unable to reproduce their own computational work without considerable agony.\" [1]\n\"It takes some effort to organize your research to be reproducible. We found that although the effort seems to be directed to helping other people stand thisup on your shoulders, the principal beneficiary is generally the author herself. This is because time turns each one of us into another person, and by making effort to communicate with strangers, we help ourselves to communicate with our future selves.\" [2]\n* Collaboration with other researchers, bringing a new employee/student up to speed or continuing to build on the work of a former team member: \"Research cooperation can happen effortlessly if you use a uniform system for filing your research.\" [2]\n* Speeding up the progress of science, and helping readers: \"In a traditional article the author merely outlines the relevant computations: the limitations of a paper medium prohibit a complete documentation including experimental data, parameter values, and the author's programs. Consequently, the reader has painfully to re-implement the author's work before verifying and utilizing it. Even if the reader receives the author's source files (a feasible assumption considering the recent progress in electronic publishing), the results can be recomputed only if the various programs are invoked exactly as in the original publication. The reader must spend valuable time merely rediscovering minutiae, which the author was unable to communicate conveniently.\" [1]\n* A reproducible experiment is the ultimate level of documentation. Code that works shows what actually happened in the experiment, regardless of the quality of theoretical explanations elsewhere\n* A reproducible experiment is the first step towards an industrial implementation\n\n==Error catching==\n* Makes total peer review possible. \"Many eyes make all bugs shallow\" (Raymond, The Cathedral and the Bazaar)\n* Discourages false claims, is an essential requirement for scientific integrity [4]\n* Helps avoid errors caused by subtle differences in the implementation of current experiment and reference experiment [4]\n* A reproducible experiment also serves as a regression test for the underlying software, helping avoind unintentional side effects of future modifications.\n\n==Large benefit for small marginal cost==\n\"Our experience shows that it is only slightly more difficult to give birth to a \"living\" document than a \"dead\" one. The major hurdles in preparing a doctoral dissertation, research monograph or textbook are these: (1) mastering the subject matter itself, (2) writing the ancillary technical programs, (3) using a text editor and word processing system, and (4) writing the command scripts that run the programs to make the illustrations. The difference between preparing a \"live\" document and a \"dead\" one, lies in the command scripts. Will they be run once and then forgotten, or will they be attached to the figure-caption pushbutton?\" [3]\n\n==The last resort when returns start to diminish==\nScientific progress is [http://en.wikipedia.org/wiki/The_Structure_of_Scientific_Revolutions not uniform]. In the first stages after a new idea is discovered to be valuable, scientists proceed to exploit the \"lowest-hanging fruit\"/\"stake their territory\" as soon as possible. In this stage experimental methodology tends to not be followed in a pedantic fashion, as second-order inaccuracies do not have a large influence on the results. However, when returns start to diminish, improvements can drown in these second-order errors, and experiments need to be carefully set up (and made truly reproducible) in order to be able to perform accurate comparisons. More commentary on this topic, with application to the seismic processing industry, is provided in [5].\n\n=Pitfalls of reproducibility=\n\nA few problems arise whenever reproducibility is put in practice. Fortunately, Madagascar has the potential to avoid all of them:\n\n==The \"out-of-date\" pitfall==\n\nLet us presume a reproducible experiment was set up and verified, then archived to disk... is that all?\n\nNo. Software dependencies and platforms change in time. Each change is incremental, but overall they add up. An archived experiment will not run a few years later, when libraries are different, versions of compilers/interpreters are different, etc. The only way to archive an experiment statically, \"maintenance-free\" is to conserve the actual physical machine it was run on. Nothing less will do: even archiving an image of the whole disk does not help, as old OSs will lack drivers for new hardware. The solution is to re-run the experiment every time something changed in the system, from a bug fix in the source code of the experiment's tools to a new version of a library called by a dependency of a dependency. The experiments function as regression tests.\n\n==The \"legacy maintenance\" pitfall==\n\nPerpetual regression testing works well, but somebody thinking two steps ahead may wonder how it scales with growth in the number of experiments. By necessity, the entire community will have to participate in the testing of the experiments. Since every participant in the community scales her own experiments to maximize use of own resources, nobody will have enough resources to run all experiments for everybody, or even significantly more than her own share! \n\nTrue problems arise when people stop participating in the community, by graduating, changing employers, shirking their testing duties, not being able to perform them, etc, but the experiments they created remain in the system and need to be tested. To see the magnitude of the problem, try to imagine the Stanford Exploration Project continously testing and debugging all numerical experiments done since the inception of the group in 1973. (Moore's Law would help, but unfortunately it is already slowing down dramatically) \n\nThe first solution is finding \"sterile\" community members, who are willing to run tests and perform maintenance, but do not generate their own experiments. Possible candidates are corporate sponsors, foundations set up by professional associations, and libraries (yes, 21st century archiving involves keeping documents \"alive\"!). Then there is the sad, last-resort solution of dropping support for the oldest, least-referenced experiments. This should be avoided as much as possible, because bringing an experiment up to date after it was left to become obsolete can involve practically rewriting it, which is much more expensive than continous maintenance. Those who have any doubts should download one of the SEP CDs from the early 90s and try to reproduce the papers.\n\n=Economic obstacles and how to overcome them=\nReproducibility has many obvious advantages, so it begs the question: why are so few practitioners of it today? The answer is that its benefits are enormous for the long-term, but most material incentives favor the short term. Getting a junk-food meal in front of the TV/computer is cheaper, takes less time, and is more immediately rewarding than cooking at home a lean steak with salad and exercising to keep in shape. This is commonly framed as an issue of willpower, but sadly, it is often the case that the time or resources (money, education) to take the long-term-health option are not available. This is also the case with the lack of software testing in many instances of regular software development. Since a reproducible paper is essentially a regression test, the end-product of a numerically-intensive piece of research often is a software application, and the issues related to software testing have been analyzed by many others, I will discuss the two together. \n\nMany purchasers of software do not understand that a large software application is more complex in its behavior than, say, a nuclear power plant. Unlike purchases of common objects/machinery, it should come with automated testing covering all paths through the source code and extensive documentation. Past experience has conditioned purchasers to expect buggy software and poor documentation. Many decision-makers are rewarded for a purchase that visibly minimizes costs now, even if many bugs and a poor interface result in hard-to-quantify productivity losses over the long term. The software market is a [http://en.wikipedia.org/wiki/The_Market_for_Lemons Lemon Market], in which the buyer, not having the ability to distinguish between high and low quality, pays an average price, so higher-quality products which cost more to make are pushed out of the market. Producers of high-quality goods have traditionally fought lemon markets by educating the consumer and seeking independent certifications, such as [http://en.wikipedia.org/wiki/ISO_9000#Summary_of_ISO_9001:2000_in_informal_language ISO 9001] for software development.\n\nSponsors of research have more ability to distinguish between good and bad research, but the researcher is rewarded proportionally to the number of publications, encouraging hasty, non-reproducible work, even if putting the parameters and data into a reproducibility framework would have taken just a few more hours. There is no extra reward now for the author of a paper that is likely to still be reproducible ten years down the road. Hence most people do not bother with it. Of course, they forfeit all the long-term advantages, including the distinction of calling their work science (If it's not reproducible, then it's not science, sorry). But the bottom line is that rewards are proportional to the number of papers. The ease of technology transfer when a reproducible paper already exists is a good argument for convincing industrial sponsors of research to request reproducibility as a deliverable. In the case of academic and government sponsors, the only way to go is to continuously advocate the long-term benefits of reproducibility, until they change their internal policy of evaluation, giving appropriate weight to reproducible research.\n\nNot only are the extrinsic motivations perversely arraigned, but many scientists themselves, and many programmers even, are not properly educated when it comes to software engineering. Computer programming, like playing the stock market, is prone to a \"It is easy to enter the game, hence I have a chance of winning\" mentality. Any child can write a simple \"Hello, world\" programming script, and anybody with a credit card can open a brokerage account. However, from that point to writing a world-class piece of software, or to becoming and staying rich by investing, is a really long way. Most of the pilgrims on this road are self-educated, mostly following the example of those around them, and many have gaping holes in their knowledge that they are not even aware of. A regression test suite is part of the software engineer's toolbox, but how many researchers in numerically-intensive sciences are currently doing regression testing or reproducibility? How many are even using version control with easy visual comparison tools for their code? How many have at least read even one famous software engineering book, and actively work to improve their skills in this field by following online discussions on this topic? The way to promote reproducible research among practitioners is, again, permanent advocacy of its benefits, as well as making a foundation of software engineering knowledge prerequisite for graduate-level training in numerically-intensive sciences.\n\nA fundamental reason for the frontier mentality that still pervades the software world is that for decades software had to keep pace with hardware developments described by Moore's law, and this resulted in a high pace of change of what computer programs did, as well as of APIs of dependencies. By the time a full-fledged test suite would be written, the design and function of the software might have had to change in order to expand to what new hardware would allow it to do. However, the tide has turned. The explosive growth in computer clock speeds has already stopped, growth in hard drive capacity has started to slow down, and the outlet for growth now is the increase in number of CPUs. Should this slowdown persist, there will be more time available for testing and documenting software. This will have consequences in numerically-intensive sciences as well: increases in raw CPU power meant an easy avenue of progress through applying algorithms that up to that time were too expensive to try in practice. Should this go away, practitioners would have to research second-order effects and to focus more on algorithm speeds. Working with smaller improvements means a lower signal/noise ratio. This in turn begs for scientific rigor of experiments through reproducibility, as well as commoditization of codes that does not offer competitive advantage in order to facilitate comparison between experiments.\n\nA final factor stopping reproducibility from thriving are commercial restrictions. Commercial entities sponsor research because they want to derive a competitive advantage from it. They should be encouraged to share that part of work that does not constitute a competitive advantage, in effect commoditizing the platform so they can focus their efforts on that part of the software/research stack that adds the most value. The personnel problems that the oil and gas industry will soon start facing with the retirement of the baby boomer generation may be instrumental in convincing large consumers of software (oil companies) that manpower in the industry as a whole is too scarce to dedicate it to maintaining a large number of competing platforms. The example of other industries (software, banking) can be given in order to show that cooperation on a small number of common platforms so that everybody can focus on the value-added parts is a desirable [http://en.wikipedia.org/wiki/Nash_equilibrium Nash equilibrium]. Already several oil companies open-sourced their platforms (examples). Even in such cases, companies will keep \"the good bits\" to themselves, and this is understandable. However, should by any event reproducibility become mainstream, they would be compelled to share more in order to be a leader of change rather than shield from it and be left behind by the general advance.\n\n=About reproducibility=\n\nIn chronological order:\n\n* [4] Feynman's famous [http://wwwcdf.pd.infn.it/~loreti/science.html Cargo Cult Science] Caltech graduation address (1974), in [http://en.wikipedia.org/wiki/Surely_You%27re_Joking%2C_Mr._Feynman%21 Surely You're Joking, Mr. Feynman!] (1985)\n* [3] \"Seismology on CD-ROM\", introduction to the first SEP reproducible document (1991)\n* \"Electronic Documents Give Reproducible Research a New Meaning\", expanded abstract from 1992 SEG Annual Meeting\n* [2] [http://sepwww.stanford.edu/research/redoc/IRIS.html Making Research Reproducible], introduction to the first SEP reproducibility system distributed through the WWW. 1996\n* [http://www.ad-astra.ro/journal/2/vlad_reproducibility.pdf Reproducibility in computer-intensive sciences], Ad Astra short note (2000)\n* [1] [http://sep.stanford.edu/lib/exe/fetch.php?id=sep%3Aresearch%3Areproducible&cache=cache&media=sep:research:reproducible:cip.pdf \"Making Scientific computations reproducible (2000)\" Schwab, M.; Karrenbach, N.; Claerbout, J., , Computing in Science & Engineering, Vol. 2, Issue6, Nov.-Dec. 2000, p.61-67]\n* [http://www.agu.org/eos_elec/000381e.html Complete PostScript: An Archival and Exchange Format for the Sciences?] (2003) EOS 84(36), P. Wessel, U. of Hawaii at Manoa, Honolulu\n* [http://www.dlib.org/dlib/september04/vandesompel/09vandesompel.html Rethinking Scholarly Communication], Sept. 2004 article in the D-Lib Magazine\n* [http://www.bepress.com/bioconductor/paper2/ Statistical Analyses and Reproducible Research], a Bioconductor Project Working Paper (2004)\n* [http://sepwww.stanford.edu/sep/jon/reproducible.html Reproducible computational research: A history of hurdles, mostly overcome], by J. Claerbout (2006)\n* [[Reproducible_computational_experiments_using_SCons#Reproducible_research_philosophy|Reproducible research philosophy]], a section in the Madagascar tutorial to using SCons for reproducibility purposes (2006)\n* [http://www.econ.uiuc.edu/~roger/repro.html The Reproducibility in Econometric Research] page from UIUC (2006)\n* [http://arstechnica.com/journals/science.ars/2006/10/25/5744 Scientists on Science: Reproducibility], an Ars Technica article (2006)\n* [http://en.wikipedia.org/wiki/Reproducibility Wikipedia article on reproducibility] (2006)\n* [http://boscoh.com/protein/a-sign-a-flipped-structure-and-a-scientific-flameout-of-epic-proportions What happens in the lack of peer review of code] (2007). Careful preparation of the results for reproducibility testing may have led to the discovery of this bug.\n* [5] [http://www.reproducibility.org/rsflog/index.php?/archives/140-The-low-hanging-fruit-in-the-forests-of-Madagascar.html The low-hanging fruit in the forests of Madagascar] (2007): Speculation on the future of reproducibility in seismic processing\n\n=Reproducible science in practice=\n\n* Some [http://sepwww.stanford.edu/doku.php?id=sep:research:reports Stanford Exploration Project reports] between 1990 and 2007\n* [http://software.seg.org/ software.seg.org]: Even if the algorithms are available, the input data is also needed for a completely reproducible numerical experiment. Besides publishing code for papers in Geophysics, this SEG site also makes some datasets publicly available\n* [http://www.agu.org/pubs/esupp_about.html AGU Electronic Data Supplements]: Since 1994, software and data were accepted, peer reviewed and made available through FTP. More information on the [http://www.agu.org/pubs/agu_elec.html AGU Electronic Services and Publications] page\n* [http://itk.org/ The Insight Toolkit], which attempts to provide reference implementations of published algorithms in Medical Image Processing, and [http://www.insight-journal.org/ the Insight Journal], which allows authors to publish open articles which are automatically verified with CMake\n* [http://lcavwww.epfl.ch/reproducible_research/ LCAV] &ndash; Audiovisual Communications Laboratory, Ecole Polytechnique Federale de Lausanne\n* [http://www-stat.stanford.edu/~wavelab/ WaveLab]: Implementation of the concept of reproducibile research in Matlab from the Dept. of Statistics, Stanford University\n* [http://lcavwww.epfl.ch/reproducible_research/ Reproducible Neurophysiological Data Analysis]: a setup from U. Paris 5 for reproducible research in neurophysiology with Sweave. Sweave itself is advertised as a [http://www.stat.umn.edu/~charlie/Sweave/ package for reproducible research]\n* [http://drexel-coas-elearning.blogspot.com/2006/09/open-notebook-science.html Open Notebook Science]\n* [http://www.reproducibleresearch.net/ reproducibleresearch.net]\n\nThe links above point to explicit attempts to bundle together whole scientific experiments, as described in scientific papers. It is worth noting that:\n* It was not uncommon for scientific articles and books written during the late 1970's and early 1980's to contain printouts of the computer programs used. This alone helped clarify the algorithm and remove any doubts about the implementation. If input parameters were mentioned in the text and data was created synthetically, then the article can be considered reproducible for all practical purposes. The brevity of the computer programs of those times helped make them publishable in print and made them easy to understand, so in practice those results may be even more reproducible than a live working paper based on thousands of lines of poorly written code. Volumes of [http://www.segdl.org/geophysics/ Geophysics] with sections dedicated to computer programs are 45/1980(nr 3,7,11), 44/1979 (nr 12) and others [Note to self: complete list. The earliest example probably gains the title of earliest reproducibile experiment]\n* Outside the scientific world there are many instances of using software to automatically re-create a document with figures whenever the underlying data changes. Internet searches on \"automatic reporting\" or \"automatic report generation\" yield useful information on such utilities used in finance, meteorology, computer system administration, medicine, government administration, etc.\n* Some proprietary software packages have offered reproducibility capabilities:\n** Matlab notebooks\n** The whole Mathcad\n** Mathematica may have \"live document\" capabilities"
                    }
                ]
            }
        }
    }
}