Repository: igmhub/picca (language: python)

Issue:
Explore cont methods refactor write functions
I refactored compute_delta_stack and hdu write functions into expected_flux.py. Now it can be used by TrueContinuum.


I also added the option num bins variance for True continuum to write the final var_lss with these.


Discussion / hints:

Fix patch:
diff --git a/docs/delta_extraction/data_model/data_model-ExpectedFlux.png b/docs/delta_extraction/data_model/data_model-ExpectedFlux.png
index 4a8c7b717..fddf3a4d3 100644
Binary files a/docs/delta_extraction/data_model/data_model-ExpectedFlux.png and b/docs/delta_extraction/data_model/data_model-ExpectedFlux.png differ
diff --git a/docs/delta_extraction/data_model/data_model-FullDataModel.png b/docs/delta_extraction/data_model/data_model-FullDataModel.png
index 7275f3f3c..66f22a68b 100644
Binary files a/docs/delta_extraction/data_model/data_model-FullDataModel.png and b/docs/delta_extraction/data_model/data_model-FullDataModel.png differ
diff --git a/docs/delta_extraction/data_model/data_model.drawio b/docs/delta_extraction/data_model/data_model.drawio
index 73bb03161..29f7f4eb8 100644
--- a/docs/delta_extraction/data_model/data_model.drawio
+++ b/docs/delta_extraction/data_model/data_model.drawio
@@ -1,1 +1,1 @@
-<mxfile host="Electron" modified="2022-05-16T09:47:22.309Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/17.4.2 Chrome/100.0.4896.60 Electron/18.0.1 Safari/537.36" etag="rMx4XB2F2NwtT9wuKf6u" version="17.4.2" type="device" pages="7"><diagram id="nPyiXVHnBq5R0qJwF2HZ" name="Main">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</diagram><diagram name="Simplified Main" id="joHP-pMOU07-pkZl2VE5">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</diagram><diagram id="_gUzTnbLqX_FSo8O-JG7" name="Correction">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</diagram><diagram id="RSB3thF5JrANvTTKpqBh" name="Mask">7V1Zc6O4Fv41qep7q0KxL4+JE89ye0lPepb0i0s22GaCjRtIYvevvxJIGCSBhQ2O45DqqjZCCIG+sx8dLrTBYv1LBFbzT6HrBReq7K4vtJsLVVUcw4b/oZZN1mKrWtYwi3wXd9o23Ps/Pdwo49Yn3/XiUsckDIPEX5UbJ+Fy6U2SUhuIovCl3G0aBuW7rsDMYxruJyBgW//23WROnsLatv/q+bM5ubNiOtmZBSCd8ZPEc+CGL4Um7fZCG0RhmGS/FuuBF6CXR97LwNW+34xH66vfZD1czj7KT4vZZTbYsMkl+SNE3jJpd2g1G/oZBE/4feFnTTbkBXpL9wqtAzwaB+Hk8UK7hk14oRUzOxz68F7ajQyP5skC/VTSE0m0+Qe1S7pjkoaHtMGxddJws8aXZkeb4tGdF/kLL/Ei0rj2k2xEAx89FM5sR0IHZCDB14dfcxw+RROv7p3hd5SAaObVDUiw57kliOLl+cUL4YNFG9jhZQtMxcRoi7wAJP5zGcUAE8MsvzYf7i704dOpMibcS00xsms2hB4dvTxI9qD4uiJw6KFsU3JUeftnUQOrTnng7MUwA0MUgU2h2wp1iGseQSXvIr+TLe+YqVp7AfyRTYIcFVZh25TSTQMa0l6JhhRJlo03SkPKm6AhxaBpyKKgLkxDlizZmrP9o4GqapJR6GB3QlEMPeHHqaYnrfaCbuhJb0RPy3DpURQDoXKP+4ZRMg9n4RIEt9vWMk3p5yKXFEuQphRRmjqUfuyypHB0eT/qyZVJPJDhmFJBHsnUzNqSP5Q0sZ1m0ofq3w2xGAyxyJL0X4ZgIi/2f4JxekgJGBD4syX8HXhTCJrrZy9KfKg+X+HmcZgk4QKeCMDYC67B5HEWhU9LdxAGYZQOrk3TP9hlGi4TItQaABwTPLYA8Cwvcr0bzchb1wI1Z9it8H1LkssreUlx/XA6jb2EWtxWltNsbTmjzKZ50+vZznKqqmTrpfVEwtY61pJazJLeP0XP3oZZ1PjFXwQglWbpi8dn0KJO5n7gfgSb8Am99ziBq0aOrudh5P+E/QFBADwdkWVTzVKPe3QlxkyKIe+OLKZCNX0C61LHjyBOcMMkDAKwiv1xPr8F5Lj+8hpDK+1EngZptTxspaDzXNKb2NboYBaAOM7vtfAnpFMShY9eYbCM+xdu9tFfkinNIuD68Dlu/AiC0A+Xqa4QIR3xelqe02AwHA4GhWsK50xzODTNxsK6Ac9SdUq46RgxBY1WI7QzL7gq8kYeKZRQ3BSyNkcDu0YKw3oF36XnjqZB8ATnfwXbbnHbELVAuKkaZhXoAhckIOt2g37Rp4NwNkMa1BX+7S9n0sesje4KmcnUn2VdB9lvtkuElzrGQ/oxYgPhNL2GnGSuW4D4kXPFMITAh2QQPzKUCpc2YfCIFdEd4jQJV+jKFZjAh/2Y9rnRty1/4OVFTSG8dhqkVDH3XddbplSTgKTA+LEOA2dlXMN/EBADpIEacJYDeKxsj+E/1D2C4F7CiQM/hbEHqfrFQ5TNgB8/TxWtCNKDJUwPhDebYuinvRmtgd/ZbX5w17/Ij3aAYAGXMzVEjrzEe/DcoiSSq1Gyi9vXcWNGXh0bcgrB1y7MEWy2jjli39SBLvCzN52CjriyBRT4HGyYxXxDHOjmUmHYkMayIY2Dx1RvvAtjHy8jUTTLOO0CiseGhS7Iimo00sNQobCoGKgXV3Imt0Yjf+kno9GH/xRFWqEDWK2CzaggFnf0TAVhZR+4FKunxBsVlICndWVvyCEjMElGrhckoHpQuKaJF42mqayt7oYe1Ic4/+mNUADIi1BXfJ57QRACd5TpDB+y/0bwVl4m5SEgq24Ueel1xTdWd5u0O1JyKmee9qh/sTF49grvqZc1Zy1rRLV7xdK6Yisqw1ZuAsBVdDszSaf02k1c1X4XpirHxpxOgbGPGduZSWpTcQJFcRjQqjYPtEZXJqnCi7KlJmYAUv46CvyFn2QMHrI5kFB2XspwhQ3OtDcaNusL0HquNtK3lFc2MQergH5uZqIoFlVhMFbbg1zomV3Zg4pAPGqnkN4TBr3wrhXenYHOYQ1CLui6MwjZuI64QVgEm5hX6mxsxM4QoSiCfKgzY5ANDXGNwa2jND2bHcIXEnuRdJ+R1F0Urje7TcEPmVWWScDMG7qHedJzvjfF+RSFtU+4ONc6M0/YgFkT20TrbZOztk1UuWycODzbRDM5jLmzcJlSFS8Lwnjkuzi25PqThDDa3oDY24BoI6DExUd3ulwbEaVejL6mGG0MOkN9ZdDlyTa9AdGJAdEYEZYtKKa6AgQnmFQTRuptgZ6JWYKald4ZZtlIxdU4DqOxF/Xhit4kICaBLu8dr9C6sglUfrwi1f8BxnAWt8BzbCNu0ZsV+5oVOadpPS6hdxWXUPu4xBuXyM1BZ712XELlxSUO9z8LaZsNGV0P8zcLc0eQt3bmg1Y5wZbeem7Nem6OCEUV1ei6QgQblbhBKXu3WZ4jfM+3UQSX/GgmyfmbHodt6kF5fFWbeoZDDf51aZIoVtkk0U1Wcis6T3Jb1QDGt/sDbapbzlAi0vZ+1Cai3CQq3k8W0BQAysddgsS7RksZM3TTwoY4lRcu6Zlra8y1jQgJF5ud8VZegMQEC2RqLscx+u8P4Mce3cigpr2yAHldjQdydV1BgHzvv67ZF6K7/9EBXUWAYYbDIdFgQ4qD4fZmHGxnDQHREgIEZDtLCBAGJUsyNh0OLspB1Z8xaAtbuKoAzTMdVbLsQo0OijVWlBXYjtv9XmJNIKpz0lv9CamfzF5/hXIAdrh2bAAGObF7tbFXG7eebIolOY4t6axw5u5NrFEcD5LOGhuE6dW19tQ1TRwlNeraMbclarzQxmuqa7l+9lDW3Xapa0VVTVJUrbG6VqWUVatxLatrwiWfCMq6LvmkKDQD27NgmmIrUrn4mm1pEl1+rUIla01kC4RYTlrdIqT6HtUtgR0UJ712SntLZzuSodp5uTS1TFipkiFr29NdyQ0Bp/r7WBHbkByzUL+uXJ1KgZZoV0vA8WIH4C4K083xRzNC+nSaE06nUYV2/3J9yTR3bw+31Rn2s1EAFmMXl5kCuMZjWsGJl06jysu5X51tA1WpCCzjhR/H6dsWHPPnCIzj0qgUKfUR6lOOUGutbCrgkURnu5K1fTcV9Plf7SCAt0VYJMDWGgJ0AV9w75fZ3y/TvLQLb4swDxJdOWZ01sNcTs5i5NYq0/xGwQaM0qzUFbdC4rbbuK5bAp7QSBXtY6b9OfRnvag8d1HJ3VHMIwunq2wuXcCD3ZYvEgU6Zb3skLThBA4qKY+8aEVfpa1bjX2VzcyF3Z5HvFi7PY9Yde/c80iM5vxbBRoVERH+VkO+oQUPpdHIbFxgvm3nls664BUG0iftSyE0+Q49kzrrVX6LRd5bW8B21u/yeAtosF60q3Gc5oF+QzJf0I92eKWK8/eXNfSJcQu4X6vDIas2Dga3RtreTDA2dbtTH9AxeTs4uLl2ne1MMwTSL991gfNmuDBa8R1xU4G78h0ZfYnz17a2jg46Q5DvdOauMnt3VZfuquaIsATZUFfeKrPKWwW1tj9XnGoUqAA5fA0jEE98/wNUfXBNb8gjVHnpvaRH9GV4E2J25dRP4g+xF0yza6qH6JnhWTNDi+OR4kHf6MojZbIeKZQL3MR66FOBz9x6MCh/lm6zIpy/Tacz08EU+NRtbzoIgyLnAq3v1OrMdDAFMiJ7aXnK0rI56DimAx90nZkOfTHsLk2H5ojgmA5H3TBq8jJJsa6fwNc1KlVYYkyJbT/y8QiOtZGeJ+d6DnfWHI5jD3Dx3Jk9YAs4RwoR6nEQIn39GjaRyI2ZHaL3f8GEiwobmzXHvCgFp2XZvjgoOK0bJBid7pWWUAL5KwenCX/YGZw2RLcxF5FBPFmHBqxUOmKt2ntulrm0FMnRNWbncp6B4diSIVM6YXt7Z25Xg/HVzfVqbH51fku8P6f/Wj8ueYh+k3v6VaMAb7kW2q++H4ywjZPZD3apkDxJkjapqxLNRoVhrlG7yxRZhcAvbKQQy9NoC+I8ByaF3lPJwagj0fNOwVAep1/uvk/ky+/fh18+/wNeEiXmMCfkIor7orL9Lhh81lApVsP7SHB3NWW5qK0KmKRlZFGRxNE0AguP+8k6/tftRuE4rrmogWvv/e4nqGUwJ1lOljtjNiIhtv59ZvbxM7Pbgdwxi8lyZywQTejdeiJuvXbwIFp1tQWvHnfCnNBC/4G7num1DPIjft6OO2OBWMYhnr7cbSHutSi4SPRso8nWO+g4O6vp8LyDzbTyolujbpV3VyUU9Wp04M6zyntGFMYMEPZy2PXOPJkeuPFuFP59TZN2ruBqO9UTVWsvgD+yOexrun8OLpOVMr//lgR3Tgx+t5y/vnJM9ycoF1C0RkLpMwMQCxey6BPwzzyFxtbzilEEozanEDN83Nwn2XZJPS6GBRyHveIrovjWcojDvhDJh0QLui93zgLWdztagUyq3D0UzokH6qrCKVu9gK8l7K8Q1OYOFzWCOiy8SnzPZLf/OPq+SgFVT16xbTEtYA+x+/DyRf4c/v1p9tfqF/0x/t/z7z80jtiFbKf3l79RfznDG0Vps1rYWjrtMBf+CJvdAlflgpbvME99AWMQjHy4QutRsllh7zdcAHbTAUgKn2/uP83Wuit9BxSrmdHBrvQ2ajNxp9e70k/bq9Q+5HjFoLpypXOnx//aZDufZXPdEeKW2wDjh+y79gWmObggH7sfLfNgIjzTf+StJ5km1bKOyqYFtjL0VniVFd4BIDj7m7qKP3396n9+9v/5OVm7v/4b/P0psdcqP2MxSDDdIV0wpyXzx1OYpO8iZT+QqgpN5gz/X0psRM5J+KJVebxhcx6z28BZZ3ciI1R7APZJheRyztQDV/QPlOIGkmOQ42P5CChTvc2SVaJZwVkCebWpI0umorfiI7BlRbIKlaDLDnXLdCRbKUQC9vMdOKYCJ+zQw5Cy+rYsyYUcSuoZDvjoUeMABGVAqrpd+1x0f/LxlOp4Bb2jsnzBwfEKLlc58SRR4eTPMiFWM9A3mSTKfRyeGfdO5MGeHJwffVYkVNpxvy0h3UkD9fSkwSXLAs29/cU0r3PE/MVdMHb2uU6TVQvko50Lq96B6RNm1T/m0fTeBZvLHw+ftO9f5Am029+z6n4wq9bNYkhQlQzVeU1mXWeqt8CrHcU2W2LWBs2sDQdJuipN+m2ybpPecvXqrJvLAM5Ty67mdefDunstuyUtu5Zpt8igD8rQ3M2gbctqS5umI9Kq2Q6DNikOZ8ivx6CZrM3T5M/nqVpXM7Tz4c8CUZLXzFcvb+qXZNXZxT2r89W701+bJbAfJz2N0V8VdU8HM5OcJmPPbdsp6pemTN/J3sXttNoLmnI7eBiFSOPYdo/Aav4pdD3U4/8=</diagram><diagram id="2t2efU7mqRpUEueg9p6R" name="Data">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</diagram><diagram id="je2KSbhj7LrZFA1j369E" name="ExpectedFlux">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</diagram><diagram id="iPTn10C6GmmupZz-RSug" name="FullDataModel">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</diagram></mxfile>
\ No newline at end of file
+<mxfile host="Electron" modified="2022-06-01T09:29:26.061Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/17.4.2 Chrome/100.0.4896.60 Electron/18.0.1 Safari/537.36" etag="o73BEZSrA9-Hf1zTM24B" version="17.4.2" type="device" pages="7"><diagram id="nPyiXVHnBq5R0qJwF2HZ" name="Main">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</diagram><diagram name="Simplified Main" id="joHP-pMOU07-pkZl2VE5">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</diagram><diagram id="_gUzTnbLqX_FSo8O-JG7" name="Correction">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</diagram><diagram id="RSB3thF5JrANvTTKpqBh" name="Mask">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</diagram><diagram id="2t2efU7mqRpUEueg9p6R" name="Data">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</diagram><diagram id="je2KSbhj7LrZFA1j369E" name="ExpectedFlux">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</diagram><diagram id="iPTn10C6GmmupZz-RSug" name="FullDataModel">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</diagram></mxfile>
\ No newline at end of file
diff --git a/py/picca/delta_extraction/config.py b/py/picca/delta_extraction/config.py
index a352421c2..16244f784 100644
--- a/py/picca/delta_extraction/config.py
+++ b/py/picca/delta_extraction/config.py
@@ -332,16 +332,16 @@ def __format_data_section(self):
                                   f"Found: '{key}'. Accepted options are "
                                   f"{accepted_options}")
 
+        # add "out dir" and "num processors" if necesssary
+        section["out dir"] = self.out_dir
+        if "num processors" in accepted_options and "num processors" not in section:
+            section["num processors"] = str(self.num_processors)
+
         # update the section adding the default choices when necessary
         for key, value in default_args.items():
             if key not in section:
                 section[key] = str(value)
 
-        # add output directory
-        section["out dir"] = self.out_dir
-        if "num processors" in accepted_options and "num processors" not in section:
-            section["num processors"] = str(self.num_processors)
-
         # finally add the information to self.data
         self.data = (DataType, section)
 
@@ -396,11 +396,6 @@ def __format_expected_flux_section(self):
                     f"Found: '{key}'. Accepted options are "
                     f"{accepted_options}")
 
-        # update the section adding the default choices when necessary
-        for key, value in default_args.items():
-            if key not in section:
-                section[key] = str(value)
-
         # add "out dir" and "num processors" if necesssary
         # currently all the expected fluxes accept both "out dir" and
         # "num processors" but that might not always be the case
@@ -409,6 +404,12 @@ def __format_expected_flux_section(self):
         if ("num processors" in accepted_options and
                 "num processors" not in section):  # pragma: no branch
             section["num processors"] = str(self.num_processors)
+
+        # update the section adding the default choices when necessary
+        for key, value in default_args.items():
+            if key not in section:
+                section[key] = str(value)
+
         # finally add the information to self.continua
         self.expected_flux = (ExpectedFluxType, section)
 
diff --git a/py/picca/delta_extraction/data.py b/py/picca/delta_extraction/data.py
index 314c9dfd9..a525409d0 100644
--- a/py/picca/delta_extraction/data.py
+++ b/py/picca/delta_extraction/data.py
@@ -23,15 +23,15 @@
     "lambda max rest frame",
     "lambda min",
     "lambda min rest frame",
-    "minimum number pixels in forest",
-    "out dir",
-    "rejection log file",
     "minimal snr",
     # these options are allowed but will be overwritten by
     # minimal snr (only needed to allow running on a .config
     # with default options)
     "minimal snr pk1d",
     "minimal snr bao3d",
+    "minimum number pixels in forest",
+    "out dir",
+    "rejection log file",
 ]
 
 defaults = {
diff --git a/py/picca/delta_extraction/data_catalogues/desi_data.py b/py/picca/delta_extraction/data_catalogues/desi_data.py
index bcbe72da3..756299676 100644
--- a/py/picca/delta_extraction/data_catalogues/desi_data.py
+++ b/py/picca/delta_extraction/data_catalogues/desi_data.py
@@ -17,23 +17,21 @@
     defaults as defaults_quasar_catalogue)
 from picca.delta_extraction.utils import ACCEPTED_BLINDING_STRATEGIES
 from picca.delta_extraction.utils_pk1d import spectral_resolution_desi, exp_diff_desi
+from picca.delta_extraction.utils import update_accepted_options, update_default_options
 
-accepted_options = sorted(
-    list(
-        set(accepted_options + accepted_options_quasar_catalogue + [
-            "blinding", "num processors", "use non-coadded spectra",
-            "wave solution"
-        ])))
+accepted_options = update_accepted_options(accepted_options, accepted_options_quasar_catalogue)
+accepted_options = update_accepted_options(
+    accepted_options,
+    ["blinding", "num processors", "use non-coadded spectra", "wave solution"])
 
-defaults = defaults.copy()
-defaults.update({
+defaults = update_default_options(defaults, {
     "delta lambda": 0.8,
     "delta log lambda": 3e-4,
     "blinding": "corr_yshift",
     "use non-coadded spectra": False,
     "wave solution": "lin",
 })
-defaults.update(defaults_quasar_catalogue)
+defaults = update_default_options(defaults, defaults_quasar_catalogue)
 
 
 def merge_new_forest(forests_by_targetid, new_forests_by_targetid):
diff --git a/py/picca/delta_extraction/data_catalogues/sdss_data.py b/py/picca/delta_extraction/data_catalogues/sdss_data.py
index 80771d772..987a24923 100644
--- a/py/picca/delta_extraction/data_catalogues/sdss_data.py
+++ b/py/picca/delta_extraction/data_catalogues/sdss_data.py
@@ -15,18 +15,20 @@
 from picca.delta_extraction.quasar_catalogues.drq_catalogue import (
     accepted_options as accepted_options_quasar_catalogue)
 from picca.delta_extraction.utils_pk1d import exp_diff, spectral_resolution
+from picca.delta_extraction.utils import update_accepted_options, update_default_options
 
-accepted_options = sorted(
-    list(
-        set(accepted_options + accepted_options_quasar_catalogue +
-            ["rebin", "mode"])))
+accepted_options = update_accepted_options(accepted_options, accepted_options_quasar_catalogue)
+accepted_options = update_accepted_options(accepted_options, ["rebin", "mode"])
+accepted_options = update_accepted_options(
+    accepted_options,
+    ["delta lambda", "delta log lambda", "delta lambda rest frame"],
+    remove=True)
 
-defaults = defaults.copy()
-defaults.update({
+defaults = update_default_options(defaults, {
     "mode": "spplate",
     "rebin": 3,
 })
-defaults.update(defaults_drq)
+defaults = update_default_options(defaults, defaults_drq)
 
 
 class SdssData(Data):
diff --git a/py/picca/delta_extraction/expected_flux.py b/py/picca/delta_extraction/expected_flux.py
index 6cb3acb0c..afa1d5aa1 100644
--- a/py/picca/delta_extraction/expected_flux.py
+++ b/py/picca/delta_extraction/expected_flux.py
@@ -3,8 +3,26 @@
 is the product of the unabsorbed quasar continuum and the mean transmission
 """
 import multiprocessing
+
+import fitsio
+import numpy as np
+from scipy.interpolate import interp1d
+
+from picca.delta_extraction.astronomical_objects.forest import Forest
 from picca.delta_extraction.astronomical_objects.pk1d_forest import Pk1dForest
-from picca.delta_extraction.errors import ExpectedFluxError
+from picca.delta_extraction.errors import ExpectedFluxError, AstronomicalObjectError
+from picca.delta_extraction.utils import find_bins
+
+accepted_options = [
+    "iter out prefix", "num bins variance", "num processors", "out dir"
+]
+
+defaults = {
+    "iter out prefix": "delta_attributes",
+    "num bins variance": 20,
+    "num processors": 0,
+}
+
 
 class ExpectedFlux:
     """Abstract class from which all classes computing the expected flux
@@ -36,15 +54,119 @@ class ExpectedFlux:
     out_dir: str (from ExpectedFlux)
     Directory where logs will be saved.
     """
+
     def __init__(self, config):
         """Initialize class instance"""
         self.los_ids = {}
 
-        self.out_dir = config.get("out dir")
-        if self.out_dir is None:
+        self.iter_out_prefix = None
+        self.out_dir = None
+        self.num_bins_variance = None
+        self.num_processors = None
+        self.__parse_config(config)
+
+        # check that Forest class variables are set
+        # these are required in order to initialize the arrays
+        try:
+            Forest.class_variable_check()
+        except AstronomicalObjectError as error:
             raise ExpectedFluxError(
-                "Missing argument 'out dir' required by ExpectedFlux")
-        self.out_dir += "Log/"
+                "Forest class variables need to be set "
+                "before initializing variables here.") from error
+
+        # initialize wavelength array for variance functions
+        self.log_lambda_var_func_grid = None
+        self._initialize_variance_wavelength_array()
+        # variance functions are initialized by the child classes
+
+        # initialize mean continuum
+        self.get_mean_cont = None
+        self.get_mean_cont_weight = None
+        self._initialize_mean_continuum_arrays()
+
+        # to store the stack of deltas
+        self.get_stack_delta = None
+        self.get_stack_delta_weights = None
+
+    def _initialize_mean_continuum_arrays(self):
+        """Initialize mean continuum arrays
+        The initialized arrays are:
+        - self.get_mean_cont
+        - self.get_mean_cont_weight
+        """
+        # initialize the mean quasar continuum
+        # TODO: maybe we can drop this and compute first the mean quasar
+        # continuum on compute_expected_flux
+        self.get_mean_cont = interp1d(Forest.log_lambda_rest_frame_grid,
+                                      np.ones_like(
+                                          Forest.log_lambda_rest_frame_grid),
+                                      fill_value="extrapolate")
+        self.get_mean_cont_weight = interp1d(
+            Forest.log_lambda_rest_frame_grid,
+            np.zeros_like(Forest.log_lambda_rest_frame_grid),
+            fill_value="extrapolate")
+
+    def _initialize_variance_wavelength_array(self):
+        """Initialize the wavelength array where variance functions will be
+        computed
+        The initialized arrays are:
+        - self.log_lambda_var_func_grid
+        """
+        # initialize the variance-related variables (see equation 4 of
+        # du Mas des Bourboux et al. 2020 for details on these variables)
+        if Forest.wave_solution == "log":
+            self.log_lambda_var_func_grid = (
+                Forest.log_lambda_grid[0] +
+                (np.arange(self.num_bins_variance) + .5) *
+                (Forest.log_lambda_grid[-1] - Forest.log_lambda_grid[0]) /
+                self.num_bins_variance)
+        # TODO: this is related with the todo in check the effect of finding
+        # the nearest bin in log_lambda space versus lambda space infunction
+        # find_bins in utils.py. Once we understand that we can remove
+        # the dependence from Forest from here too.
+        elif Forest.wave_solution == "lin":
+            self.log_lambda_var_func_grid = np.log10(
+                10**Forest.log_lambda_grid[0] +
+                (np.arange(self.num_bins_variance) + .5) *
+                (10**Forest.log_lambda_grid[-1] -
+                 10**Forest.log_lambda_grid[0]) / self.num_bins_variance)
+
+        # TODO: Replace the if/else block above by something like the commented
+        # block below. We need to check the impact of doing this on the final
+        # deltas first (eta, var_lss and fudge will be differently sampled).
+        #start of commented block
+        #resize = len(Forest.log_lambda_grid)/self.num_bins_variance
+        #print(resize)
+        #self.log_lambda_var_func_grid = Forest.log_lambda_grid[::int(resize)]
+        #end of commented block
+
+    def __parse_config(self, config):
+        """Parse the configuration options
+
+        Arguments
+        ---------
+        config: configparser.SectionProxy
+        Parsed options to initialize class
+
+        Raises
+        ------
+        ExpectedFluxError if variables are not valid
+        """
+        self.iter_out_prefix = config.get("iter out prefix")
+        if self.iter_out_prefix is None:
+            raise ExpectedFluxError(
+                "Missing argument 'iter out prefix' required "
+                "by ExpectedFlux")
+        if "/" in self.iter_out_prefix:
+            raise ExpectedFluxError(
+                "Error constructing ExpectedFlux. "
+                "'iter out prefix' should not incude folders. "
+                f"Found: {self.iter_out_prefix}")
+
+        self.num_bins_variance = config.getint("num bins variance")
+        if self.num_bins_variance is None:
+            raise ExpectedFluxError(
+                "Missing argument 'num bins variance' required by ExpectedFlux")
 
         self.num_processors = config.getint("num processors")
         if self.num_processors is None:
@@ -53,10 +175,63 @@ def __init__(self, config):
         if self.num_processors == 0:
             self.num_processors = (multiprocessing.cpu_count() // 2)
 
+        self.out_dir = config.get("out dir")
+        if self.out_dir is None:
+            raise ExpectedFluxError(
+                "Missing argument 'out dir' required by ExpectedFlux")
+        self.out_dir += "Log/"
+
+    def compute_delta_stack(self, forests, stack_from_deltas=False):
+        """Compute a stack of the delta field as a function of wavelength
+
+        Arguments
+        ---------
+        forests: List of Forest
+        A list of Forest from which to compute the deltas.
+
+        stack_from_deltas: bool - default: False
+        Flag to determine whether to stack from deltas or compute them
+        """
+        stack_delta = np.zeros_like(Forest.log_lambda_grid)
+        stack_weight = np.zeros_like(Forest.log_lambda_grid)
+
+        for forest in forests:
+            if stack_from_deltas:
+                delta = forest.delta
+                weights = forest.weights
+            else:
+                # ignore forest if continuum could not be computed
+                if forest.continuum is None:
+                    continue
+                delta = forest.flux / forest.continuum
+                variance = self.compute_forest_variance(forest,
+                                                        forest.continuum)
+                weights = 1. / variance
+
+            bins = find_bins(forest.log_lambda, Forest.log_lambda_grid,
+                             Forest.wave_solution)
+            rebin = np.bincount(bins, weights=delta * weights)
+            stack_delta[:len(rebin)] += rebin
+            rebin = np.bincount(bins, weights=weights)
+            stack_weight[:len(rebin)] += rebin
+
+        w = stack_weight > 0
+        stack_delta[w] /= stack_weight[w]
+
+        self.get_stack_delta = interp1d(
+            Forest.log_lambda_grid[stack_weight > 0.],
+            stack_delta[stack_weight > 0.],
+            kind="nearest",
+            fill_value="extrapolate")
+        self.get_stack_delta_weights = interp1d(
+            Forest.log_lambda_grid[stack_weight > 0.],
+            stack_weight[stack_weight > 0.],
+            kind="nearest",
+            fill_value=0.0,
+            bounds_error=False)
 
-    # pylint: disable=no-self-use
     # this method should use self in child classes
-    def compute_expected_flux(self, forests):
+    def compute_expected_flux(self, forests):  # pylint: disable=no-self-use
         """Compute the mean expected flux of the forests.
         This includes the quasar continua and the mean transimission. It is
         computed iteratively following as explained in du Mas des Bourboux et
@@ -74,6 +249,25 @@ def compute_expected_flux(self, forests):
         raise ExpectedFluxError("Function 'compute_expected_flux' was not "
                                 "overloaded by child class")
 
+    # this method should use self in child classes
+    def compute_forest_variance(self, forest, continuum):  # pylint: disable=no-self-use
+        """Compute the forest variance
+
+        Arguments
+        ---------
+        forest: Forest
+        A forest instance where the variance will be computed
+
+        continuum: array of float
+        Quasar continuum associated with the forest
+
+        Raise
+        -----
+        MeanExpectedFluxError if function was not overloaded by child class
+        """
+        raise ExpectedFluxError("Function 'compute_forest_variance' was not "
+                                "overloaded by child class")
+
     def extract_deltas(self, forest):
         """Apply the continuum to compute the delta field
 
@@ -83,11 +277,82 @@ def extract_deltas(self, forest):
         A Forest instance to which the continuum is applied
         """
         if self.los_ids.get(forest.los_id) is not None:
-            expected_flux = self.los_ids.get(forest.los_id).get("mean expected flux")
-            forest.deltas = forest.flux/expected_flux - 1
+            expected_flux = self.los_ids.get(
+                forest.los_id).get("mean expected flux")
+            forest.deltas = forest.flux / expected_flux - 1
             forest.weights = self.los_ids.get(forest.los_id).get("weights")
             if isinstance(forest, Pk1dForest):
                 forest.ivar = self.los_ids.get(forest.los_id).get("ivar")
                 forest.exposures_diff /= expected_flux
 
             forest.continuum = self.los_ids.get(forest.los_id).get("continuum")
+
+    def hdu_cont(self, results):
+        """Add to the results file an HDU with the continuum information
+
+        Arguments
+        ---------
+        results: fitsio.FITS
+        The open fits file
+        """
+        results.write([
+            Forest.log_lambda_rest_frame_grid,
+            self.get_mean_cont(Forest.log_lambda_rest_frame_grid),
+            self.get_mean_cont_weight(Forest.log_lambda_rest_frame_grid),
+        ],
+                      names=['loglam_rest', 'mean_cont', 'weight'],
+                      extname='CONT')
+
+    def hdu_stack_deltas(self, results):
+        """Add to the results file an HDU with the delta stack
+
+        Arguments
+        ---------
+        results: fitsio.FITS
+        The open fits file
+        """
+        header = {}
+        if hasattr(self, 'order'):
+            header["FITORDER"] = self.order
+
+        results.write([
+            Forest.log_lambda_grid,
+            self.get_stack_delta(Forest.log_lambda_grid),
+            self.get_stack_delta_weights(Forest.log_lambda_grid)
+        ],
+                      names=['loglam', 'stack', 'weight'],
+                      header=header,
+                      extname='STACK_DELTAS')
+
+    # this method should use self in child classes
+    def hdu_var_func(self, results):  # pylint: disable=no-self-use
+        """Add to the results file an HDU with the variance functions
+
+        This function is a placeholder here and should be overloaded by child
+        classes if they require it
+
+        Arguments
+        ---------
+        results: fitsio.FITS
+        The open fits file
+        """
+
+    def save_iteration_step(self, iteration):
+        """Save the statistical properties of deltas at a given iteration
+        step
+
+        Arguments
+        ---------
+        iteration: int
+        Iteration number. -1 for final iteration
+        """
+        if iteration == -1:
+            iter_out_file = self.iter_out_prefix + ".fits.gz"
+        else:
+            iter_out_file = self.iter_out_prefix + f"_iteration{iteration+1}.fits.gz"
+
+        with fitsio.FITS(self.out_dir + iter_out_file, 'rw',
+                         clobber=True) as results:
+            self.hdu_stack_deltas(results)
+            self.hdu_var_func(results)
+            self.hdu_cont(results)
diff --git a/py/picca/delta_extraction/expected_fluxes/dr16_expected_flux.py b/py/picca/delta_extraction/expected_fluxes/dr16_expected_flux.py
index 23395560e..b27bfbb60 100644
--- a/py/picca/delta_extraction/expected_fluxes/dr16_expected_flux.py
+++ b/py/picca/delta_extraction/expected_fluxes/dr16_expected_flux.py
@@ -2,35 +2,40 @@
 import logging
 import multiprocessing
 
-import fitsio
 import iminuit
 import numpy as np
 from scipy.interpolate import interp1d
 
 from picca.delta_extraction.astronomical_objects.forest import Forest
 from picca.delta_extraction.astronomical_objects.pk1d_forest import Pk1dForest
-from picca.delta_extraction.errors import ExpectedFluxError, AstronomicalObjectError
-from picca.delta_extraction.expected_flux import ExpectedFlux
-from picca.delta_extraction.utils import find_bins
-
-accepted_options = [
-    "iter out prefix", "limit eta", "limit var lss", "min num qso in fit",
-    "num bins variance", "num iterations", "num processors", "order", "out dir",
-    "use constant weight", "use ivar as weight", "force stack delta to zero"
-]
-
-defaults = {
-    "iter out prefix": "delta_attributes",
-    "limit eta": (0.5, 1.5),
-    "limit var lss": (0., 0.3),
-    "num bins variance": 20,
-    "num iterations": 5,
-    "min num qso in fit": 100,
-    "order": 1,
-    "use constant weight": False,
-    "use ivar as weight": False,
-    "force stack delta to zero": True
-}
+from picca.delta_extraction.errors import ExpectedFluxError
+from picca.delta_extraction.expected_flux import ExpectedFlux, defaults, accepted_options
+from picca.delta_extraction.least_squares.least_squares_cont_model import LeastsSquaresContModel
+from picca.delta_extraction.least_squares.least_squares_var_stats import (
+    LeastsSquaresVarStats, FUDGE_REF)
+from picca.delta_extraction.utils import (find_bins, update_accepted_options,
+                                          update_default_options)
+
+accepted_options = update_accepted_options(accepted_options, [
+    "force stack delta to zero", "limit eta", "limit var lss", "min num qso in fit",
+    "num iterations", "order", "use constant weight", "use ivar as weight"
+])
+
+defaults = update_default_options(
+    defaults, {
+        "force stack delta to zero": True,
+        "limit eta": (0.5, 1.5),
+        "limit var lss": (0., 0.3),
+        "num iterations": 5,
+        "min num qso in fit": 100,
+        "order": 1,
+        "use constant weight": False,
+        "use ivar as weight": False,
+    })
+
+FUDGE_FIT_START = FUDGE_REF
+ETA_FIT_START = 1.
+VAR_LSS_FIT_START = 0.1
 
 
 class Dr16ExpectedFlux(ExpectedFlux):
@@ -42,16 +47,24 @@ class Dr16ExpectedFlux(ExpectedFlux):
     -------
     (see ExpectedFlux in py/picca/delta_extraction/expected_flux.py)
     __init__
-    _initialize_variables
+    _initialize_get_eta
+    _initialize_get_fudge
+    _initialize_get_var_lss
+    _initialize_mean_continuum_arrays
+    _initialize_variance_wavelength_array
+    _initialize_variance_functions
     __parse_config
     compute_continuum
     compute_delta_stack
+    compute_forest_variance
     compute_mean_cont
     compute_expected_flux
     compute_var_stats
-        chi2
     get_continuum_model
     get_continuum_weights
+    hdu_cont
+    hdu_stack_deltas
+    hdu_var_func
     populate_los_ids
     save_iteration_step
 
@@ -118,6 +131,11 @@ class Dr16ExpectedFlux(ExpectedFlux):
     logger: logging.Logger
     Logger object
 
+    min_num_qso_in_fit: int
+    Minimum number of quasars contributing to a bin of wavelength and pipeline
+    variance in order to consider it in the fit. This is passed to
+    LeastsSquaresVarStats.
+
     num_bins_variance: int
     Number of bins to be used to compute variance functions and statistics as
     a function of wavelength.
@@ -146,16 +164,18 @@ def __init__(self, config):
         ---------
         config: configparser.SectionProxy
         Parsed options to initialize class
+
+        Raise
+        -----
+        ExpectedFluxError if Forest class variables are not set
         """
         self.logger = logging.getLogger(__name__)
         super().__init__(config)
 
         # load variables from config
-        self.iter_out_prefix = None
         self.limit_eta = None
         self.limit_var_lss = None
         self.min_num_qso_in_fit = None
-        self.num_bins_variance = None
         self.num_iterations = None
         self.order = None
         self.use_constant_weight = None
@@ -163,127 +183,98 @@ def __init__(self, config):
         self.force_stack_delta_to_zero = None
         self.__parse_config(config)
 
-        # initialize variables
+        # initialize variance functions
         self.get_eta = None
         self.get_fudge = None
-        self.get_mean_cont = None
-        self.get_mean_cont_weight = None
         self.get_num_pixels = None
         self.get_valid_fit = None
         self.get_var_lss = None
-        self.log_lambda_var_func_grid = None
-        self._initialize_variables()
+        self.fit_variance_functions = []
+        self._initialize_variance_functions()
 
         self.continuum_fit_parameters = None
 
-        self.get_stack_delta = None
-        self.get_stack_delta_weights = None
+    def _initialize_get_eta(self):
+        """Initialiaze function get_eta"""
+        # if use_ivar_as_weight is set, we fix eta=1, var_lss=0 and fudge=0
+        if self.use_ivar_as_weight:
+            eta = np.ones(self.num_bins_variance)
+        # if use_constant_weight is set, we fix eta=0, var_lss=1, and fudge=0
+        elif self.use_constant_weight:
+            eta = np.zeros(self.num_bins_variance)
+        # normal initialization, starting values eta=1, var_lss=0.2 , and fudge=0
+        else:
+            eta = np.ones(self.num_bins_variance)
+            # this bit is what is actually freeing eta for the fit
+            self.fit_variance_functions.append("eta")
+
+        self.get_eta = interp1d(self.log_lambda_var_func_grid,
+                                eta,
+                                fill_value='extrapolate',
+                                kind='nearest')
+
+    def _initialize_get_fudge(self):
+        """Initialiaze function get_fudge"""
+        # if use_ivar_as_weight is set, we fix eta=1, var_lss=0 and fudge=0
+        # if use_constant_weight is set, we fix eta=0, var_lss=1, and fudge=0
+        # normal initialization, starting values eta=1, var_lss=0.2 , and fudge=0
+        if not self.use_ivar_as_weight and not self.use_constant_weight:
+            # this bit is what is actually freeing fudge for the fit
+            self.fit_variance_functions.append("fudge")
+        fudge = np.zeros(self.num_bins_variance)
+        self.get_fudge = interp1d(self.log_lambda_var_func_grid,
+                                  fudge,
+                                  fill_value='extrapolate',
+                                  kind='nearest')
 
-    def _initialize_variables(self):
-        """Initialize useful variables
+    def _initialize_get_var_lss(self):
+        """Initialiaze function get_var_lss"""
+        # if use_ivar_as_weight is set, we fix eta=1, var_lss=0 and fudge=0
+        if self.use_ivar_as_weight:
+            var_lss = np.zeros(self.num_bins_variance)
+        # if use_constant_weight is set, we fix eta=0, var_lss=1, and fudge=0
+        elif self.use_constant_weight:
+            var_lss = np.ones(self.num_bins_variance)
+        # normal initialization, starting values eta=1, var_lss=0.2 , and fudge=0
+        else:
+            var_lss = np.zeros(self.num_bins_variance) + 0.2
+            # this bit is what is actually freeing var_lss for the fit
+            self.fit_variance_functions.append("var_lss")
+        self.get_var_lss = interp1d(self.log_lambda_var_func_grid,
+                                    var_lss,
+                                    fill_value='extrapolate',
+                                    kind='nearest')
+
+    def _initialize_variance_functions(self):
+        """Initialize variance functions
         The initialized arrays are:
         - self.get_eta
         - self.get_fudge
-        - self.get_mean_cont
-        - self.get_mean_cont_weight
         - self.get_num_pixels
         - self.get_valid_fit
         - self.get_var_lss
-        - self.log_lambda_var_func_grid
-
-        Raise
-        -----
-        ExpectedFluxError if Forest class variables are not set
         """
-        # check that Forest class variables are set
-        try:
-            Forest.class_variable_check()
-        except AstronomicalObjectError as error:
-            raise ExpectedFluxError(
-                "Forest class variables need to be set "
-                "before initializing variables here.") from error
-
-        # initialize the mean quasar continuum
-        # TODO: maybe we can drop this and compute first the mean quasar
-        # continuum on compute_expected_flux
-        self.get_mean_cont = interp1d(Forest.log_lambda_rest_frame_grid,
-                                      np.ones_like(
-                                          Forest.log_lambda_rest_frame_grid),
-                                      fill_value="extrapolate")
-        self.get_mean_cont_weight = interp1d(
-            Forest.log_lambda_rest_frame_grid,
-            np.zeros_like(Forest.log_lambda_rest_frame_grid),
-            fill_value="extrapolate")
-
-        # initialize the variance-related variables (see equation 4 of
-        # du Mas des Bourboux et al. 2020 for details on these variables)
-        if Forest.wave_solution == "log":
-            self.log_lambda_var_func_grid = (
-                Forest.log_lambda_grid[0] +
-                (np.arange(self.num_bins_variance) + .5) *
-                (Forest.log_lambda_grid[-1] - Forest.log_lambda_grid[0]) /
-                self.num_bins_variance)
-        # TODO: this is related with the todo in check the effect of finding
-        # the nearest bin in log_lambda space versus lambda space infunction
-        # find_bins in utils.py. Once we understand that we can remove
-        # the dependence from Forest from here too.
-        elif Forest.wave_solution == "lin":
-            self.log_lambda_var_func_grid = np.log10(
-                10**Forest.log_lambda_grid[0] +
-                (np.arange(self.num_bins_variance) + .5) *
-                (10**Forest.log_lambda_grid[-1] -
-                 10**Forest.log_lambda_grid[0]) / self.num_bins_variance)
-
-        # TODO: Replace the if/else block above by something like the commented
-        # block below. We need to check the impact of doing this on the final
-        # deltas first (eta, var_lss and fudge will be differently sampled).
-        #start of commented block
-        #resize = len(Forest.log_lambda_grid)/self.num_bins_variance
-        #print(resize)
-        #self.log_lambda_var_func_grid = Forest.log_lambda_grid[::int(resize)]
-        #end of commented block
-
         # if use_ivar_as_weight is set, eta, var_lss and fudge will be ignored
         # print a message to inform the user
         if self.use_ivar_as_weight:
             self.logger.info(("using ivar as weights, ignoring eta, "
                               "var_lss, fudge fits"))
-            eta = np.ones(self.num_bins_variance)
-            var_lss = np.zeros(self.num_bins_variance)
-            fudge = np.zeros(self.num_bins_variance)
-            num_pixels = np.zeros(self.num_bins_variance)
-            valid_fit = np.ones(self.num_bins_variance)
+            valid_fit = np.ones(self.num_bins_variance, dtype=bool)
         # if use_constant_weight is set then initialize eta, var_lss, and fudge
         # with values to have constant weights
         elif self.use_constant_weight:
             self.logger.info(("using constant weights, ignoring eta, "
                               "var_lss, fudge fits"))
-            eta = np.zeros(self.num_bins_variance)
-            var_lss = np.ones(self.num_bins_variance)
-            fudge = np.zeros(self.num_bins_variance)
-            num_pixels = np.zeros(self.num_bins_variance)
             valid_fit = np.ones(self.num_bins_variance, dtype=bool)
         # normal initialization: eta, var_lss, and fudge are ignored in the
         # first iteration
         else:
-            eta = np.ones(self.num_bins_variance)
-            var_lss = np.zeros(self.num_bins_variance) + 0.2
-            fudge = np.zeros(self.num_bins_variance)
-            num_pixels = np.zeros(self.num_bins_variance)
             valid_fit = np.zeros(self.num_bins_variance, dtype=bool)
+        num_pixels = np.zeros(self.num_bins_variance)
 
-        self.get_eta = interp1d(self.log_lambda_var_func_grid,
-                                eta,
-                                fill_value='extrapolate',
-                                kind='nearest')
-        self.get_var_lss = interp1d(self.log_lambda_var_func_grid,
-                                    var_lss,
-                                    fill_value='extrapolate',
-                                    kind='nearest')
-        self.get_fudge = interp1d(self.log_lambda_var_func_grid,
-                                  fudge,
-                                  fill_value='extrapolate',
-                                  kind='nearest')
+        self._initialize_get_eta()
+        self._initialize_get_var_lss()
+        self._initialize_get_fudge()
         self.get_num_pixels = interp1d(self.log_lambda_var_func_grid,
                                        num_pixels,
                                        fill_value="extrapolate",
@@ -303,18 +294,13 @@ def __parse_config(self, config):
 
         Raises
         ------
-        ExpectedFluxError if iter out prefix is not valid
+        ExpectedFluxError if variables are not valid
         """
-        self.iter_out_prefix = config.get("iter out prefix")
-        if self.iter_out_prefix is None:
-            raise ExpectedFluxError(
-                "Missing argument 'iter out prefix' required "
-                "by Dr16ExpectedFlux")
-        if "/" in self.iter_out_prefix:
+        self.force_stack_delta_to_zero = config.getboolean("force stack delta to zero")
+        if self.force_stack_delta_to_zero is None:
             raise ExpectedFluxError(
-                "Error constructing Dr16ExpectedFlux. "
-                "'iter out prefix' should not incude folders. "
-                f"Found: {self.iter_out_prefix}")
+                "Missing argument 'force stack delta to zero' required by Dr16ExpectedFlux"
+            )
 
         limit_eta_string = config.get("limit eta")
         if limit_eta_string is None:
@@ -352,12 +338,6 @@ def __parse_config(self, config):
                 "Missing argument 'min qso in fit' required by Dr16ExpectedFlux"
             )
 
-        self.num_bins_variance = config.getint("num bins variance")
-        if self.num_bins_variance is None:
-            raise ExpectedFluxError(
-                "Missing argument 'num bins variance' required by Dr16ExpectedFlux"
-            )
-
         self.num_iterations = config.getint("num iterations")
         if self.num_iterations is None:
             raise ExpectedFluxError(
@@ -374,18 +354,26 @@ def __parse_config(self, config):
             raise ExpectedFluxError(
                 "Missing argument 'use constant weight' required by Dr16ExpectedFlux"
             )
+        if self.use_constant_weight:
+            self.logger.warning(
+                "Deprecation Warning: option 'use constant weight' is now deprecated "
+                "and will be removed in future versions. Consider using class "
+                "Dr16FixedEtaVarlssFudgeExpectedFlux with options 'eta = 0', "
+                "'var lss = 1' and 'fudge = 0'")
+            # if use_ivar_as_weight is set, we fix eta=1, var_lss=0 and fudge=0
+            # if use_constant_weight is set, we fix eta=0, var_lss=1, and fudge=0
 
         self.use_ivar_as_weight = config.getboolean("use ivar as weight")
         if self.use_ivar_as_weight is None:
             raise ExpectedFluxError(
                 "Missing argument 'use ivar as weight' required by Dr16ExpectedFlux"
             )
-
-        self.force_stack_delta_to_zero = config.getboolean("force stack delta to zero")
-        if self.force_stack_delta_to_zero is None:
-            raise ExpectedFluxError(
-                "Missing argument 'force stack delta to zero' required by Dr16ExpectedFlux"
-            )
+        if self.use_ivar_as_weight:
+            self.logger.warning(
+                "Deprecation Warning: option 'use ivar as weight' is now deprecated "
+                "and will be removed in future versions. Consider using class "
+                "Dr16FixedEtaVarlssFudgeExpectedFlux with options 'eta = 1', "
+                "'var lss = 0' and 'fudge = 0'")
 
     # this should be a read-only function as it is called in a parallelized way
     # TODO: consider making this not a function to minimize future bugs
@@ -462,62 +450,87 @@ def compute_continuum(self, forest):
 
         return cont_model, bad_continuum_reason, continuum_fit_parameters
 
-    def compute_delta_stack(self, forests, stack_from_deltas=False):
-        """Compute a stack of the delta field as a function of wavelength
+    def compute_expected_flux(self, forests):
+        """Compute the mean expected flux of the forests.
+        This includes the quasar continua and the mean transimission. It is
+        computed iteratively following as explained in du Mas des Bourboux et
+        al. (2020)
 
         Arguments
         ---------
         forests: List of Forest
         A list of Forest from which to compute the deltas.
-
-        stack_from_deltas: bool - default: False
-        Flag to determine whether to stack from deltas or compute them
         """
-        # TODO: move this to _initialize_variables (after tests are done)
-        stack_delta = np.zeros_like(Forest.log_lambda_grid)
-        stack_weight = np.zeros_like(Forest.log_lambda_grid)
+        context = multiprocessing.get_context('fork')
+        for iteration in range(self.num_iterations):
+            self.logger.progress(
+                f"Continuum fitting: starting iteration {iteration} of {self.num_iterations}"
+            )
+            if self.num_processors > 1:
+                with context.Pool(processes=self.num_processors) as pool:
+                    imap_it = pool.imap(self.compute_continuum, forests)
+
+                    self.continuum_fit_parameters = {}
+                    for forest, (cont_model, bad_continuum_reason,
+                                 continuum_fit_parameters) in zip(
+                                     forests, imap_it):
+                        forest.bad_continuum_reason = bad_continuum_reason
+                        forest.continuum = cont_model
+                        self.continuum_fit_parameters[forest.los_id] = continuum_fit_parameters
 
-        for forest in forests:
-            if stack_from_deltas:
-                delta = forest.delta
-                weights = forest.weights
             else:
-                # ignore forest if continuum could not be computed
-                if forest.continuum is None:
-                    continue
-                delta = forest.flux / forest.continuum
-                var_lss = self.get_var_lss(forest.log_lambda)
-                eta = self.get_eta(forest.log_lambda)
-                fudge = self.get_fudge(forest.log_lambda)
-                var = 1. / forest.ivar / forest.continuum**2
-                variance = eta * var + var_lss + fudge / var
-                weights = 1. / variance
+                self.continuum_fit_parameters = {}
+                for forest in forests:
+                    (cont_model, bad_continuum_reason,
+                     continuum_fit_parameters) = self.compute_continuum(forest)
+                    forest.bad_continuum_reason = bad_continuum_reason
+                    forest.continuum = cont_model
+                    self.continuum_fit_parameters[forest.los_id] = continuum_fit_parameters
+                #forests = [self.compute_continuum(f) for f in forests]
 
-            bins = find_bins(forest.log_lambda, Forest.log_lambda_grid,
-                             Forest.wave_solution)
-            rebin = np.bincount(bins, weights=delta * weights)
-            stack_delta[:len(rebin)] += rebin
-            rebin = np.bincount(bins, weights=weights)
-            stack_weight[:len(rebin)] += rebin
-
-        w = stack_weight > 0
-        stack_delta[w] /= stack_weight[w]
-
-        self.get_stack_delta = interp1d(
-            Forest.log_lambda_grid[stack_weight > 0.],
-            stack_delta[stack_weight > 0.],
-            kind="nearest",
-            fill_value="extrapolate")
-        self.get_stack_delta_weights = interp1d(
-            Forest.log_lambda_grid[stack_weight > 0.],
-            stack_weight[stack_weight > 0.],
-            kind="nearest",
-            fill_value=0.0,
-            bounds_error=False)
+            if iteration < self.num_iterations - 1:
+                # Compute mean continuum (stack in rest-frame)
+                self.compute_mean_cont(forests)
+
+                # Compute observer-frame mean quantities (var_lss, eta, fudge)
+                if not (self.use_ivar_as_weight or self.use_constant_weight):
+                    self.compute_var_stats(forests)
+
+            # compute the mean deltas
+            self.compute_delta_stack(forests)
+
+            # Save the iteration step
+            if iteration == self.num_iterations - 1:
+                self.save_iteration_step(-1)
+            else:
+                self.save_iteration_step(iteration)
+
+            self.logger.progress(
+                f"Continuum fitting: ending iteration {iteration} of "
+                f"{self.num_iterations}")
+
+        # now loop over forests to populate los_ids
+        self.populate_los_ids(forests)
+
+    def compute_forest_variance(self, forest, continuum):
+        """Compute the forest variance following Du Mas 2020
+
+        Arguments
+        ---------
+        forest: Forest
+        A forest instance where the variance will be computed
+
+        continuum: array of float
+        Quasar continuum associated with the forest
+        """
+        var_pipe = 1. / forest.ivar / continuum**2
+        var_lss = self.get_var_lss(forest.log_lambda)
+        eta = self.get_eta(forest.log_lambda)
+        fudge = self.get_fudge(forest.log_lambda)
+        return eta * var_pipe + var_lss + fudge / var_pipe
 
     # TODO: We should check if we can directly compute the mean continuum
     # in particular this means:
-    # 0. check the inner todo
     # 1. check that we can use forest.continuum instead of
     #    forest.flux/forest.continuum right before `mean_cont[:len(cont)] += cont`
     # 2. check that in that case we don't need to use the new_cont
@@ -552,13 +565,8 @@ def compute_mean_cont(self, forests):
                              Forest.log_lambda_rest_frame_grid,
                              Forest.wave_solution)
 
-            weights = self.get_continuum_weights(forest, forest.continuum)
-            # this is needed as the weights from get_continuum_weights are
-            # divided by the continuum model squared, in this case forest.continuum
-            # TODO: check that we indeed need this or if the weights without it
-            # are better
-            if not self.use_constant_weight:
-                weights *= forest.continuum**2
+            weights = 1.0 / self.compute_forest_variance(
+                forest, forest.continuum)
             cont = np.bincount(bins,
                                weights=forest.flux / forest.continuum * weights)
             mean_cont[:len(cont)] += cont
@@ -581,68 +589,6 @@ def compute_mean_cont(self, forests):
                                              fill_value=0.0,
                                              bounds_error=False)
 
-    def compute_expected_flux(self, forests):
-        """Compute the mean expected flux of the forests.
-        This includes the quasar continua and the mean transimission. It is
-        computed iteratively following as explained in du Mas des Bourboux et
-        al. (2020)
-
-        Arguments
-        ---------
-        forests: List of Forest
-        A list of Forest from which to compute the deltas.
-        """
-        context = multiprocessing.get_context('fork')
-        for iteration in range(self.num_iterations):
-            self.logger.progress(
-                f"Continuum fitting: starting iteration {iteration} of {self.num_iterations}"
-            )
-            if self.num_processors > 1:
-                with context.Pool(processes=self.num_processors) as pool:
-                    imap_it = pool.imap(self.compute_continuum, forests)
-
-                    self.continuum_fit_parameters = {}
-                    for forest, (cont_model, bad_continuum_reason,
-                                 continuum_fit_parameters) in zip(
-                                     forests, imap_it):
-                        forest.bad_continuum_reason = bad_continuum_reason
-                        forest.continuum = cont_model
-                        self.continuum_fit_parameters[forest.los_id] = continuum_fit_parameters
-
-            else:
-                self.continuum_fit_parameters = {}
-                for forest in forests:
-                    (cont_model, bad_continuum_reason,
-                     continuum_fit_parameters) = self.compute_continuum(forest)
-                    forest.bad_continuum_reason = bad_continuum_reason
-                    forest.continuum = cont_model
-                    self.continuum_fit_parameters[forest.los_id] = continuum_fit_parameters
-                #forests = [self.compute_continuum(f) for f in forests]
-
-            if iteration < self.num_iterations - 1:
-                # Compute mean continuum (stack in rest-frame)
-                self.compute_mean_cont(forests)
-
-                # Compute observer-frame mean quantities (var_lss, eta, fudge)
-                if not (self.use_ivar_as_weight or self.use_constant_weight):
-                    self.compute_var_stats(forests)
-
-            # compute the mean deltas
-            self.compute_delta_stack(forests)
-
-            # Save the iteration step
-            if iteration == self.num_iterations - 1:
-                self.save_iteration_step(-1)
-            else:
-                self.save_iteration_step(iteration)
-
-            self.logger.progress(
-                f"Continuum fitting: ending iteration {iteration} of "
-                f"{self.num_iterations}")
-
-        # now loop over forests to populate los_ids
-        self.populate_los_ids(forests)
-
     def compute_var_stats(self, forests):
         """Compute variance functions and statistics
 
@@ -660,184 +606,73 @@ def compute_var_stats(self, forests):
         ExpectedFluxError if wavelength solution is not valid
         """
         # initialize arrays
-        eta = np.zeros(self.num_bins_variance)
-        var_lss = np.zeros(self.num_bins_variance)
-        fudge = np.zeros(self.num_bins_variance)
-        error_eta = np.zeros(self.num_bins_variance)
-        error_var_lss = np.zeros(self.num_bins_variance)
-        error_fudge = np.zeros(self.num_bins_variance)
+        if "eta" in self.fit_variance_functions:
+            eta = np.zeros(self.num_bins_variance) + ETA_FIT_START
+        else:
+            eta = self.get_eta(self.log_lambda_var_func_grid)
+        if "var_lss" in self.fit_variance_functions:
+            var_lss = np.zeros(self.num_bins_variance) + VAR_LSS_FIT_START
+        else:
+            var_lss = self.get_var_lss(self.log_lambda_var_func_grid)
+        if "fudge" in self.fit_variance_functions:
+            fudge = np.zeros(self.num_bins_variance) + FUDGE_FIT_START
+        else:
+            fudge = self.get_fudge(self.log_lambda_var_func_grid)
         num_pixels = np.zeros(self.num_bins_variance)
         valid_fit = np.zeros(self.num_bins_variance)
-
-        # define an array to contain the possible values of pipeline variances
-        # the measured pipeline variance of the deltas will be averaged using the
-        # same binning, and the two arrays will be compared to fit the functions
-        # eta, var_lss, and fudge
-        num_var_bins = 100  # TODO: update this to self.num_bins_variance
-        var_pipe_min = np.log10(1e-5)
-        var_pipe_max = np.log10(2.)
-        var_pipe_values = 10**(var_pipe_min +
-                               ((np.arange(num_var_bins) + .5) *
-                                (var_pipe_max - var_pipe_min) / num_var_bins))
-
-        # initialize arrays to compute the statistics of deltas
-        var_delta = np.zeros(self.num_bins_variance * num_var_bins)
-        mean_delta = np.zeros(self.num_bins_variance * num_var_bins)
-        var2_delta = np.zeros(self.num_bins_variance * num_var_bins)
-        count = np.zeros(self.num_bins_variance * num_var_bins)
-        num_qso = np.zeros(self.num_bins_variance * num_var_bins)
-
-        # compute delta statistics, binning the variance according to 'ivar'
-        for forest in forests:
-            # ignore forest if continuum could not be computed
-            if forest.continuum is None:
-                continue
-            var_pipe = 1 / forest.ivar / forest.continuum**2
-            w = ((np.log10(var_pipe) > var_pipe_min) &
-                 (np.log10(var_pipe) < var_pipe_max))
-
-            # select the pipeline variance bins
-            var_pipe_bins = np.floor(
-                (np.log10(var_pipe[w]) - var_pipe_min) /
-                (var_pipe_max - var_pipe_min) * num_var_bins).astype(int)
-
-            # select the wavelength bins
-            log_lambda_bins = find_bins(forest.log_lambda[w],
-                                        self.log_lambda_var_func_grid,
-                                        Forest.wave_solution)
-
-            # compute overall bin
-            bins = var_pipe_bins + num_var_bins * log_lambda_bins
-
-            # compute deltas
-            delta = (forest.flux / forest.continuum - 1)
-            delta = delta[w]
-
-            # add contributions to delta statistics
-            rebin = np.bincount(bins, weights=delta)
-            mean_delta[:len(rebin)] += rebin
-
-            rebin = np.bincount(bins, weights=delta**2)
-            var_delta[:len(rebin)] += rebin
-
-            rebin = np.bincount(bins, weights=delta**4)
-            var2_delta[:len(rebin)] += rebin
-
-            rebin = np.bincount(bins)
-            count[:len(rebin)] += rebin
-            num_qso[np.unique(bins)] += 1
-
-        # normalise and finish the computation of delta statistics
-        w = count > 0
-        var_delta[w] /= count[w]
-        mean_delta[w] /= count[w]
-        var_delta -= mean_delta**2
-        var2_delta[w] /= count[w]
-        var2_delta -= var_delta**2
-        var2_delta[w] /= count[w]
-
-        # fit the functions eta, var_lss, and fudge
         chi2_in_bin = np.zeros(self.num_bins_variance)
-        fudge_ref = 1e-7
+
+        # initialize the fitter class
+        leasts_squares = LeastsSquaresVarStats(
+            self.num_bins_variance,
+            forests,
+            self.log_lambda_var_func_grid,
+            self.min_num_qso_in_fit,
+        )
 
         self.logger.progress(" Mean quantities in observer-frame")
         self.logger.progress(
             " loglam    eta      var_lss  fudge    chi2     num_pix valid_fit")
         for index in range(self.num_bins_variance):
-            # pylint: disable-msg=cell-var-from-loop
-            # this function is defined differntly at each step of the loop
-            def chi2(eta, var_lss, fudge):
-                """Compute the chi2 of the fit of eta, var_lss, and fudge for a
-                wavelength bin
-
-                Arguments
-                ---------
-                eta: float
-                Correction factor to the contribution of the pipeline
-                estimate of the instrumental noise to the variance.
-
-                var_lss: float
-                Pixel variance due to the Large Scale Strucure
-
-                fudge: float
-                Fudge contribution to the pixel variance
-
-                Global arguments
-                ----------------
-                (defined only in the scope of function compute_var_stats):
-
-                var_delta: array of floats
-                Variance of the delta field
-
-                var2_delta: array of floats
-                Square of the variance of the delta field
-
-                index: int
-                Index with the selected wavelength bin
-
-                num_var_bins: int
-                Number of bins in which the pipeline variance values are split
-
-                var_pipe_values: array of floats
-                Value of the pipeline variance in pipeline variance bins
-
-                num_qso: array of ints
-                Number of quasars in each pipeline variance bin
-
-                Return
-                ------
-                chi2: float
-                The obtained chi2
-                """
-                variance = eta * var_pipe_values + var_lss + fudge * fudge_ref / var_pipe_values
-                chi2_contribution = (
-                    var_delta[index * num_var_bins:(index + 1) * num_var_bins] -
-                    variance)
-                weights = var2_delta[index * num_var_bins:(index + 1) *
-                                     num_var_bins]
-                w = num_qso[index * num_var_bins:(index + 1) *
-                            num_var_bins] > self.min_num_qso_in_fit
-                return np.sum(chi2_contribution[w]**2 / weights[w])
-
-            minimizer = iminuit.Minuit(chi2,
+            leasts_squares.set_fit_bins(index)
+
+            minimizer = iminuit.Minuit(leasts_squares,
                                        name=("eta", "var_lss", "fudge"),
-                                       eta=1.,
-                                       var_lss=0.1,
-                                       fudge=1.)
+                                       eta=eta[index],
+                                       var_lss=var_lss[index],
+                                       fudge=fudge[index] / FUDGE_REF)
             minimizer.errors["eta"] = 0.05
+            minimizer.limits["eta"] = self.limit_eta
             minimizer.errors["var_lss"] = 0.05
+            minimizer.limits["var_lss"] = self.limit_var_lss
             minimizer.errors["fudge"] = 0.05
+            minimizer.limits["fudge"] = (0, None)
             minimizer.errordef = 1.
             minimizer.print_level = 0
-            minimizer.limits["eta"] = self.limit_eta
-            minimizer.limits["var_lss"] = self.limit_var_lss
-            minimizer.limits["fudge"] = (0, None)
+            minimizer.fixed["eta"] = "eta" not in self.fit_variance_functions
+            minimizer.fixed[
+                "var_lss"] = "var_lss" not in self.fit_variance_functions
+            minimizer.fixed[
+                "fudge"] = "fudge" not in self.fit_variance_functions
             minimizer.migrad()
 
             if minimizer.valid:
                 minimizer.hesse()
                 eta[index] = minimizer.values["eta"]
                 var_lss[index] = minimizer.values["var_lss"]
-                fudge[index] = minimizer.values["fudge"] * fudge_ref
-                error_eta[index] = minimizer.errors["eta"]
-                error_var_lss[index] = minimizer.errors["var_lss"]
-                error_fudge[index] = minimizer.errors["fudge"] * fudge_ref
+                fudge[index] = minimizer.values["fudge"] * FUDGE_REF
                 valid_fit[index] = True
             else:
                 eta[index] = 1.
                 var_lss[index] = 0.1
-                fudge[index] = 1. * fudge_ref
-                error_eta[index] = 0.
-                error_var_lss[index] = 0.
-                error_fudge[index] = 0.
+                fudge[index] = 1. * FUDGE_REF
                 valid_fit[index] = False
-            num_pixels[index] = count[index * num_var_bins:(index + 1) *
-                                      num_var_bins].sum()
+            num_pixels[index] = leasts_squares.get_num_pixels()
             chi2_in_bin[index] = minimizer.fval
 
             self.logger.progress(
                 f" {self.log_lambda_var_func_grid[index]:.3e} "
-                f"{eta[index]:.2e} {var_lss[index]:.2e} {fudge[index]:.2e} " +
+                f"{eta[index]:.2e} {var_lss[index]:.2e} {fudge[index]:.2e} "
                 f"{chi2_in_bin[index]:.2e} {num_pixels[index]:.2e} {valid_fit[index]}"
             )
 
@@ -937,22 +772,38 @@ def get_continuum_weights(self, forest, cont_model, **kwargs):
         if self.use_constant_weight:
             weights = np.ones_like(forest.flux)
         else:
-            # pixel variance due to the Large Scale Strucure
-            var_lss = self.get_var_lss(forest.log_lambda)
-            # correction factor to the contribution of the pipeline
-            # estimate of the instrumental noise to the variance.
-            eta = self.get_eta(forest.log_lambda)
-            # fudge contribution to the variance
-            fudge = self.get_fudge(forest.log_lambda)
-
-            var_pipe = 1. / forest.ivar / cont_model**2
-            ## prep_del.variance is the variance of delta
-            ## we want here the weights = ivar(flux)
-            variance = eta * var_pipe + var_lss + fudge / var_pipe
+            variance = self.compute_forest_variance(forest, cont_model)
             weights = 1.0 / cont_model**2 / variance
 
         return weights
 
+    def hdu_var_func(self, results):
+        """Add to the results file an HDU with the variance functions
+
+        Arguments
+        ---------
+        results: fitsio.FITS
+        The open fits file
+        """
+        values = [
+            self.log_lambda_var_func_grid,
+            self.get_eta(self.log_lambda_var_func_grid),
+            self.get_var_lss(self.log_lambda_var_func_grid),
+            self.get_fudge(self.log_lambda_var_func_grid),
+            self.get_num_pixels(self.log_lambda_var_func_grid),
+            self.get_valid_fit(self.log_lambda_var_func_grid)
+        ]
+        names = [
+            "loglam",
+            "eta",
+            "var_lss",
+            "fudge",
+            "num_pixels",
+            "valid_fit",
+        ]
+
+        results.write(values, names=names, extname='VAR_FUNC')
+
     def populate_los_ids(self, forests):
         """Populate the dictionary los_ids with the mean expected flux, weights,
         and inverse variance arrays for each line-of-sight.
@@ -966,8 +817,6 @@ def populate_los_ids(self, forests):
             if forest.bad_continuum_reason is not None:
                 continue
             # get the variance functions and statistics
-            eta = self.get_eta(forest.log_lambda)
-
             # assignment operator (=) creates a reference, such that
             # mean_expected_flux points to forest.continuum and
             # forest.continuum gets modified within if statement
@@ -975,13 +824,8 @@ def populate_los_ids(self, forests):
             if self.force_stack_delta_to_zero:
                 stack_delta = self.get_stack_delta(forest.log_lambda)
                 mean_expected_flux *= stack_delta
-            weights = self.get_continuum_weights(forest, mean_expected_flux)
-            # this is needed as the weights from get_continuum_weights are
-            # divided by the continuum model squared, in this case mean_expected_flux
-            # TODO: check that we indeed need this or if the weights without it
-            # are better
-            if not self.use_constant_weight:
-                weights *= mean_expected_flux**2
+            weights = 1.0 / self.compute_forest_variance(
+                forest, mean_expected_flux)
 
             forest_info = {
                 "mean expected flux": mean_expected_flux,
@@ -989,148 +833,9 @@ def populate_los_ids(self, forests):
                 "continuum": forest.continuum,
             }
             if isinstance(forest, Pk1dForest):
+                eta = self.get_eta(forest.log_lambda)
                 ivar = forest.ivar / (eta +
                                       (eta == 0)) * (mean_expected_flux**2)
 
                 forest_info["ivar"] = ivar
             self.los_ids[forest.los_id] = forest_info
-
-    def save_iteration_step(self, iteration):
-        """Save the statistical properties of deltas at a given iteration
-        step
-
-        Arguments
-        ---------
-        iteration: int
-        Iteration number. -1 for final iteration
-        """
-        if iteration == -1:
-            iter_out_file = self.iter_out_prefix + ".fits.gz"
-        else:
-            iter_out_file = self.iter_out_prefix + f"_iteration{iteration+1}.fits.gz"
-
-        with fitsio.FITS(self.out_dir + iter_out_file, 'rw',
-                         clobber=True) as results:
-            header = {}
-            header["FITORDER"] = self.order
-
-            # TODO: update this once the TODO in compute continua is fixed
-            results.write([
-                Forest.log_lambda_grid,
-                self.get_stack_delta(Forest.log_lambda_grid),
-                self.get_stack_delta_weights(Forest.log_lambda_grid)
-            ],
-                          names=['loglam', 'stack', 'weight'],
-                          header=header,
-                          extname='STACK_DELTAS')
-
-            results.write([
-                self.log_lambda_var_func_grid,
-                self.get_eta(self.log_lambda_var_func_grid),
-                self.get_var_lss(self.log_lambda_var_func_grid),
-                self.get_fudge(self.log_lambda_var_func_grid),
-                self.get_num_pixels(self.log_lambda_var_func_grid),
-                self.get_valid_fit(self.log_lambda_var_func_grid)
-            ],
-                          names=[
-                              'loglam', 'eta', 'var_lss', 'fudge', 'num_pixels',
-                              'valid_fit'
-                          ],
-                          extname='VAR_FUNC')
-
-            results.write([
-                Forest.log_lambda_rest_frame_grid,
-                self.get_mean_cont(Forest.log_lambda_rest_frame_grid),
-                self.get_mean_cont_weight(Forest.log_lambda_rest_frame_grid),
-            ],
-                          names=['loglam_rest', 'mean_cont', 'weight'],
-                          extname='CONT')
-
-
-class LeastsSquaresContModel:
-    """This class deals with the continuum fitting.
-
-    It is passed to iminuit and when called it will return the chi2 for a given
-    set of parameters
-
-    Methods
-    -------
-    __init__
-    __call__
-
-    Attributes
-    ----------
-    forest: Forest
-    Forest instance where the model is fit
-
-    expected_flux: Dr16ExpectedFlux
-    Dr16ExpectedFlux instance running the fit
-
-    mean_cont_kwargs: dict
-    kwargs passed to expected_flux.get_continuum_model
-
-    weights_kwargs: dict
-    kwargs passed to expected_flux.get_continuum_weights
-    """
-
-    def __init__(self,
-                 forest,
-                 expected_flux,
-                 mean_cont_kwargs=None,
-                 weights_kwargs=None):
-        """Initialize class instances
-
-        Arguments
-        ---------
-        forest: Forest
-        The forest to fit
-
-        expected_flux: Dr16ExpectedFlux
-        The expected flux instance
-
-        mean_cont_kwargs: dict or None - default = None
-        kwargs needed by method get_continuum_model of expected_flux. If None
-        then it will be assigned an empty dictionary
-
-        weights_kwargs: dict or None - default = None
-        kwargs needed by method get_continuum_weights of expected_flux. If None
-        then it will be assigned an empty dictionary
-        """
-        self.forest = forest
-        self.expected_flux = expected_flux
-        if mean_cont_kwargs is None:
-            self.mean_cont_kwargs = {}
-        else:
-            self.mean_cont_kwargs = mean_cont_kwargs
-        if weights_kwargs is None:
-            self.weights_kwargs = {}
-        else:
-            self.weights_kwargs = weights_kwargs
-
-    def __call__(self, zero_point, slope):
-        """
-        Compute chi2 for a given set of parameters
-
-        Arguments
-        ---------
-        zero_point: float
-        Zero point of the linear function (flux mean). Referred to as $a_q$ in
-        du Mas des Bourboux et al. 2020
-
-        slope: float
-        Slope of the linear function (evolution of the flux). Referred to as
-        $b_q$ in du Mas des Bourboux et al. 2020
-
-        Returns
-        -------
-        chi2: float
-        The chi2 for this run
-        """
-        cont_model = self.expected_flux.get_continuum_model(
-            self.forest, zero_point, slope, **self.mean_cont_kwargs)
-
-        weights = self.expected_flux.get_continuum_weights(
-            self.forest, cont_model, **self.weights_kwargs)
-
-        chi2_contribution = (self.forest.flux - cont_model)**2 * weights
-        return chi2_contribution.sum() - np.log(weights).sum()
diff --git a/py/picca/delta_extraction/expected_fluxes/dr16_fixed_eta_expected_flux.py b/py/picca/delta_extraction/expected_fluxes/dr16_fixed_eta_expected_flux.py
new file mode 100644
index 000000000..002fe3ca7
--- /dev/null
+++ b/py/picca/delta_extraction/expected_fluxes/dr16_fixed_eta_expected_flux.py
@@ -0,0 +1,105 @@
+"""This module defines the class Dr16FixedEtaExpectedFlux"""
+import logging
+
+import fitsio
+import numpy as np
+from scipy.interpolate import interp1d
+
+from picca.delta_extraction.errors import ExpectedFluxError
+from picca.delta_extraction.expected_fluxes.dr16_expected_flux import Dr16ExpectedFlux
+from picca.delta_extraction.expected_fluxes.dr16_expected_flux import (
+    defaults, accepted_options)
+from picca.delta_extraction.utils import update_accepted_options, update_default_options
+
+accepted_options = update_accepted_options(accepted_options, ["eta value"])
+accepted_options = update_accepted_options(
+    accepted_options,
+    ["limit eta", "use constant weight", "use ivar as weight"],
+    remove=True)
+
+defaults = update_default_options(defaults, {
+    "eta value": 1.0,
+})
+
+
+class Dr16FixedEtaExpectedFlux(Dr16ExpectedFlux):
+    """Class to the expected flux similar to Dr16ExpectedFlux but fixing eta
+
+    Methods
+    -------
+    (see Dr16ExpectedFlux in py/picca/delta_extraction/expected_fluxes/dr16_expected_flux.py)
+    __init__
+    __initialize_get_eta
+    __parse_config
+
+    Attributes
+    ----------
+    (see Dr16ExpectedFlux in py/picca/delta_extraction/expected_fluxes/dr16_expected_flux.py)
+
+    eta_value: float or string
+    If a string, name of the file containing the eta values as a function of
+    wavelength. If a float, the eta value will be applied to all wavelengths
+    """
+
+    def __init__(self, config):
+        """Initialize class instance.
+
+        Arguments
+        ---------
+        config: configparser.SectionProxy
+        Parsed options to initialize class
+        """
+        self.logger = logging.getLogger(__name__)
+
+        # load variables from config
+        self.eta_value = None
+        self.__parse_config(config)
+
+        super().__init__(config)
+
+    def _initialize_get_eta(self):
+        """Initialiaze function get_eta"""
+        # initialize eta factor
+        if self.eta_value.endswith(".fits") or self.eta_value.endswith(
+                ".fits.gz"):
+            hdu = fitsio.read(self.eta_value, ext="VAR_FUNC")
+            self.get_eta = interp1d(hdu["loglam"],
+                                    hdu["eta"],
+                                    fill_value='extrapolate',
+                                    kind='nearest')
+        else:
+            eta = np.ones(self.num_bins_variance) * float(self.eta_value)
+            self.get_eta = interp1d(self.log_lambda_var_func_grid,
+                                    eta,
+                                    fill_value='extrapolate',
+                                    kind='nearest')
+        # note that for eta to be fitted, we need to include it to
+        # self.fit_variance_functions:
+        # self.fit_variance_functions.append("eta")
+        # since we do not do it here, eta is fixed
+
+    def __parse_config(self, config):
+        """Parse the configuration options
+
+        Arguments
+        ---------
+        config: configparser.SectionProxy
+        Parsed options to initialize class
+
+        Raises
+        ------
+        ExpectedFluxError if iter out prefix is not valid
+        """
+        self.eta_value = config.get("eta value")
+        if self.eta_value is None:
+            raise ExpectedFluxError("Missing argument 'eta value' required "
+                                    "by Dr16FixEtaExpectedFlux")
+        if not (self.eta_value.endswith(".fits") or
+                self.eta_value.endswith(".fits.gz")):
+            try:
+                _ = float(self.eta_value)
+            except ValueError as error:
+                raise ExpectedFluxError(
+                    "Wrong argument 'eta value' passed to "
+                    "Dr16FixEtaExpectedFlux. Expected a fits file or "
+                    f"a float. Found {self.eta_value}") from error
diff --git a/py/picca/delta_extraction/expected_fluxes/dr16_fixed_eta_fudge_expected_flux.py b/py/picca/delta_extraction/expected_fluxes/dr16_fixed_eta_fudge_expected_flux.py
new file mode 100644
index 000000000..70188eb18
--- /dev/null
+++ b/py/picca/delta_extraction/expected_fluxes/dr16_fixed_eta_fudge_expected_flux.py
@@ -0,0 +1,39 @@
+"""This module defines the class Dr16FixedEtaFudgeExpectedFlux"""
+from picca.delta_extraction.expected_fluxes.dr16_fixed_eta_expected_flux import (
+    Dr16FixedEtaExpectedFlux)
+from picca.delta_extraction.expected_fluxes.dr16_fixed_eta_expected_flux import (
+    defaults, accepted_options)
+from picca.delta_extraction.expected_fluxes.dr16_fixed_fudge_expected_flux import (
+    Dr16FixedFudgeExpectedFlux)
+from picca.delta_extraction.expected_fluxes.dr16_fixed_fudge_expected_flux import (
+    defaults as defaults2, accepted_options as accepted_options2)
+from picca.delta_extraction.utils import update_accepted_options, update_default_options
+
+accepted_options = update_accepted_options(accepted_options, accepted_options2)
+accepted_options = update_accepted_options(
+    accepted_options,
+    ["limit eta", "use constant weight", "use ivar as weight"],
+    remove=True)
+
+defaults = update_default_options(defaults, defaults2)
+
+
+class Dr16FixedEtaFudgeExpectedFlux(Dr16FixedEtaExpectedFlux,
+                                    Dr16FixedFudgeExpectedFlux):
+    """Class to the expected flux similar to Dr16ExpectedFlux but fixing both
+    eta and fudge
+
+    Methods
+    -------
+    (see Dr16FixedEtaExpectedFlux in
+     py/picca/delta_extraction/expected_fluxes/dr16_fix_eta_expected_flux.py)
+    (see Dr16FixedFudgeExpectedFlux in
+     py/picca/delta_extraction/expected_fluxes/dr16_fix_fudge_expected_flux.py)
+
+    Attributes
+    ----------
+    (see Dr16FixedEtaExpectedFlux in
+     py/picca/delta_extraction/expected_fluxes/dr16_fix_eta_expected_flux.py)
+    (see Dr16FixedFudgeExpectedFlux in
+     py/picca/delta_extraction/expected_fluxes/dr16_fix_fudge_expected_flux.py)
+    """
diff --git a/py/picca/delta_extraction/expected_fluxes/dr16_fixed_eta_varlss_expected_flux.py b/py/picca/delta_extraction/expected_fluxes/dr16_fixed_eta_varlss_expected_flux.py
new file mode 100644
index 000000000..2833a63db
--- /dev/null
+++ b/py/picca/delta_extraction/expected_fluxes/dr16_fixed_eta_varlss_expected_flux.py
@@ -0,0 +1,39 @@
+"""This module defines the class Dr16FixedEtaVarlssExpectedFlux"""
+from picca.delta_extraction.expected_fluxes.dr16_fixed_eta_expected_flux import (
+    Dr16FixedEtaExpectedFlux)
+from picca.delta_extraction.expected_fluxes.dr16_fixed_eta_expected_flux import (
+    defaults, accepted_options)
+from picca.delta_extraction.expected_fluxes.dr16_fixed_varlss_expected_flux import (
+    Dr16FixedVarlssExpectedFlux)
+from picca.delta_extraction.expected_fluxes.dr16_fixed_varlss_expected_flux import (
+    defaults as defaults2, accepted_options as accepted_options2)
+from picca.delta_extraction.utils import update_accepted_options, update_default_options
+
+accepted_options = update_accepted_options(accepted_options, accepted_options2)
+accepted_options = update_accepted_options(
+    accepted_options,
+    ["limit eta", "limit var lss", "use constant weight", "use ivar as weight"],
+    remove=True)
+
+defaults = update_default_options(defaults, defaults2)
+
+
+class Dr16FixedEtaVarlssExpectedFlux(Dr16FixedEtaExpectedFlux,
+                                     Dr16FixedVarlssExpectedFlux):
+    """Class to the expected flux similar to Dr16ExpectedFlux but fixing both
+    eta and var_lss
+
+    Methods
+    -------
+    (see Dr16FixedEtaExpectedFlux in
+     py/picca/delta_extraction/expected_fluxes/dr16_fix_eta_expected_flux.py)
+    (see Dr16FixedVarlssExpectedFlux in
+     py/picca/delta_extraction/expected_fluxes/dr16_fix_varlss_expected_flux.py)
+
+    Attributes
+    ----------
+    (see Dr16FixedEtaExpectedFlux in
+     py/picca/delta_extraction/expected_fluxes/dr16_fix_eta_expected_flux.py)
+    (see Dr16FixedVarlssExpectedFlux in
+     py/picca/delta_extraction/expected_fluxes/dr16_fix_varlss_expected_flux.py)
+    """
diff --git a/py/picca/delta_extraction/expected_fluxes/dr16_fixed_eta_varlss_fudge_expected_flux.py b/py/picca/delta_extraction/expected_fluxes/dr16_fixed_eta_varlss_fudge_expected_flux.py
new file mode 100644
index 000000000..fb69bf921
--- /dev/null
+++ b/py/picca/delta_extraction/expected_fluxes/dr16_fixed_eta_varlss_fudge_expected_flux.py
@@ -0,0 +1,54 @@
+"""This module defines the class Dr16FixedEtaVarlssFudgeExpectedFlux"""
+from picca.delta_extraction.expected_fluxes.dr16_fixed_eta_expected_flux import (
+    Dr16FixedEtaExpectedFlux)
+from picca.delta_extraction.expected_fluxes.dr16_fixed_eta_expected_flux import (
+    defaults, accepted_options)
+from picca.delta_extraction.expected_fluxes.dr16_fixed_fudge_expected_flux import (
+    Dr16FixedFudgeExpectedFlux)
+from picca.delta_extraction.expected_fluxes.dr16_fixed_fudge_expected_flux import (
+    defaults as defaults2, accepted_options as accepted_options2)
+from picca.delta_extraction.expected_fluxes.dr16_fixed_varlss_expected_flux import (
+    Dr16FixedVarlssExpectedFlux)
+from picca.delta_extraction.expected_fluxes.dr16_fixed_varlss_expected_flux import (
+    defaults as defaults3, accepted_options as accepted_options3)
+from picca.delta_extraction.utils import update_accepted_options, update_default_options
+
+accepted_options = update_accepted_options(accepted_options, accepted_options2)
+accepted_options = update_accepted_options(accepted_options, accepted_options3)
+accepted_options = update_accepted_options(accepted_options, [
+    "limit var lss", "num iterations", "use constant weight",
+    "use ivar as weight"
+],
+                                           remove=True)
+
+defaults = update_default_options(defaults, defaults2)
+defaults = update_default_options(defaults, defaults3)
+defaults = update_default_options(defaults, {
+    "num iterations": 1,
+})
+
+
+class Dr16FixedEtaVarlssFudgeExpectedFlux(Dr16FixedEtaExpectedFlux,
+                                          Dr16FixedVarlssExpectedFlux,
+                                          Dr16FixedFudgeExpectedFlux):
+    """Class to the expected flux similar to Dr16ExpectedFlux but fixing
+    eta, var_lss and fudge
+
+    Methods
+    -------
+    (see Dr16FixedEtaExpectedFlux in
+     py/picca/delta_extraction/expected_fluxes/dr16_fix_eta_expected_flux.py)
+    (see Dr16FixedVarlssExpectedFlux in
+     py/picca/delta_extraction/expected_fluxes/dr16_fix_varlss_expected_flux.py)
+    (see Dr16FixedFudgeExpectedFlux in
+     py/picca/delta_extraction/expected_fluxes/dr16_fix_fudge_expected_flux.py)
+
+    Attributes
+    ----------
+    (see Dr16FixedEtaExpectedFlux in
+     py/picca/delta_extraction/expected_fluxes/dr16_fix_eta_expected_flux.py)
+    (see Dr16FixedVarlssExpectedFlux in
+     py/picca/delta_extraction/expected_fluxes/dr16_fix_varlss_expected_flux.py)
+    (see Dr16FixedFudgeExpectedFlux in
+     py/picca/delta_extraction/expected_fluxes/dr16_fix_fudge_expected_flux.py)
+    """
diff --git a/py/picca/delta_extraction/expected_fluxes/dr16_fixed_fudge_expected_flux.py b/py/picca/delta_extraction/expected_fluxes/dr16_fixed_fudge_expected_flux.py
new file mode 100644
index 000000000..f19c5217a
--- /dev/null
+++ b/py/picca/delta_extraction/expected_fluxes/dr16_fixed_fudge_expected_flux.py
@@ -0,0 +1,105 @@
+"""This module defines the class Dr16FixedFudgeExpectedFlux"""
+import logging
+
+import fitsio
+import numpy as np
+from scipy.interpolate import interp1d
+
+from picca.delta_extraction.errors import ExpectedFluxError
+from picca.delta_extraction.expected_fluxes.dr16_expected_flux import Dr16ExpectedFlux
+from picca.delta_extraction.expected_fluxes.dr16_expected_flux import (
+    defaults, accepted_options)
+from picca.delta_extraction.utils import update_accepted_options, update_default_options
+
+accepted_options = update_accepted_options(accepted_options, ["fudge value"])
+accepted_options = update_accepted_options(
+    accepted_options, ["use constant weight", "use ivar as weight"],
+    remove=True)
+
+defaults = update_default_options(defaults, {
+    "fudge value": 0.0,
+})
+
+
+class Dr16FixedFudgeExpectedFlux(Dr16ExpectedFlux):
+    """Class to the expected flux similar to Dr16ExpectedFlux but fixing the
+    fudge factor
+
+    Methods
+    -------
+    (see Dr16ExpectedFlux in py/picca/delta_extraction/expected_fluxes/dr16_expected_flux.py)
+    __init__
+    _initialize_get_fudge
+    __parse_config
+
+    Attributes
+    ----------
+    (see Dr16ExpectedFlux in py/picca/delta_extraction/expected_fluxes/dr16_expected_flux.py)
+
+    fudge_value: float or string
+    If a string, name of the file containing the fudge values as a function of
+    wavelength. If a float, the fudge value will be applied to all wavelengths
+    """
+
+    def __init__(self, config):
+        """Initialize class instance.
+
+        Arguments
+        ---------
+        config: configparser.SectionProxy
+        Parsed options to initialize class
+        """
+        self.logger = logging.getLogger(__name__)
+
+        # load variables from config
+        self.fudge_value = None
+        self.__parse_config(config)
+
+        super().__init__(config)
+
+    def _initialize_get_fudge(self):
+        """Initialiaze function get_fudge"""
+        # initialize fudge factor
+        if self.fudge_value.endswith(".fits") or self.fudge_value.endswith(
+                ".fits.gz"):
+            hdu = fitsio.read(self.fudge_value, ext="VAR_FUNC")
+            self.get_fudge = interp1d(hdu["loglam"],
+                                      hdu["fudge"],
+                                      fill_value='extrapolate',
+                                      kind='nearest')
+        else:
+            fudge = np.ones(self.num_bins_variance) * float(self.fudge_value)
+            self.get_fudge = interp1d(self.log_lambda_var_func_grid,
+                                      fudge,
+                                      fill_value='extrapolate',
+                                      kind='nearest')
+        # note that for fudge to be fitted, we need to include it to
+        # self.fit_variance_functions:
+        # self.fit_variance_functions.append("fudge")
+        # since we do not do it here, fudge is fixed
+
+    def __parse_config(self, config):
+        """Parse the configuration options
+
+        Arguments
+        ---------
+        config: configparser.SectionProxy
+        Parsed options to initialize class
+
+        Raises
+        ------
+        ExpectedFluxError if iter out prefix is not valid
+        """
+        self.fudge_value = config.get("fudge value")
+        if self.fudge_value is None:
+            raise ExpectedFluxError("Missing argument 'fudge value' required "
+                                    "by Dr16FixFudgeExpectedFlux")
+        if not (self.fudge_value.endswith(".fits") or
+                self.fudge_value.endswith(".fits.gz")):
+            try:
+                _ = float(self.fudge_value)
+            except ValueError as error:
+                raise ExpectedFluxError(
+                    "Wrong argument 'fudge value' passed to "
+                    "Dr16FixFudgeExpectedFlux. Expected a fits file or "
+                    f"a float. Found {self.fudge_value}") from error
diff --git a/py/picca/delta_extraction/expected_fluxes/dr16_fixed_varlss_expected_flux.py b/py/picca/delta_extraction/expected_fluxes/dr16_fixed_varlss_expected_flux.py
new file mode 100644
index 000000000..8e5b07bd6
--- /dev/null
+++ b/py/picca/delta_extraction/expected_fluxes/dr16_fixed_varlss_expected_flux.py
@@ -0,0 +1,106 @@
+"""This module defines the class Dr16FixedVarlssExpectedFlux"""
+import logging
+
+import fitsio
+import numpy as np
+from scipy.interpolate import interp1d
+
+from picca.delta_extraction.errors import ExpectedFluxError
+from picca.delta_extraction.expected_fluxes.dr16_expected_flux import Dr16ExpectedFlux
+from picca.delta_extraction.expected_fluxes.dr16_expected_flux import (
+    defaults, accepted_options)
+from picca.delta_extraction.utils import update_accepted_options, update_default_options
+
+accepted_options = update_accepted_options(accepted_options, ["var lss value"])
+accepted_options = update_accepted_options(
+    accepted_options,
+    ["limit var lss", "use constant weight", "use ivar as weight"],
+    remove=True)
+
+defaults = update_default_options(defaults, {
+    "var lss value": 0.15,
+})
+
+
+class Dr16FixedVarlssExpectedFlux(Dr16ExpectedFlux):
+    """Class to the expected flux similar to Dr16ExpectedFlux but fixing
+
+    Methods
+    -------
+    (see Dr16ExpectedFlux in py/picca/delta_extraction/expected_fluxes/dr16_expected_flux.py)
+    __init__
+    __initialize_get_eta
+    __parse_config
+
+    Attributes
+    ----------
+    (see Dr16ExpectedFlux in py/picca/delta_extraction/expected_fluxes/dr16_expected_flux.py)
+
+    var_lss_value: float or string
+    If a string, name of the file containing the var_lss values as a function of
+    wavelength. If a float, the var_lss value will be applied to all wavelengths
+    """
+
+    def __init__(self, config):
+        """Initialize class instance.
+
+        Arguments
+        ---------
+        config: configparser.SectionProxy
+        Parsed options to initialize class
+        """
+        self.logger = logging.getLogger(__name__)
+
+        # load variables from config
+        self.var_lss_value = None
+        self.__parse_config(config)
+
+        super().__init__(config)
+
+    def _initialize_get_var_lss(self):
+        """Initialiaze function get_var_lss"""
+        # initialize fudge factor
+        if self.var_lss_value.endswith(".fits") or self.var_lss_value.endswith(
+                ".fits.gz"):
+            hdu = fitsio.read(self.var_lss_value, ext="VAR_FUNC")
+            self.get_var_lss = interp1d(hdu["loglam"],
+                                        hdu["var_lss"],
+                                        fill_value='extrapolate',
+                                        kind='nearest')
+        else:
+            var_lss = np.ones(self.num_bins_variance) * float(
+                self.var_lss_value)
+            self.get_var_lss = interp1d(self.log_lambda_var_func_grid,
+                                        var_lss,
+                                        fill_value='extrapolate',
+                                        kind='nearest')
+        # note that for var_lss to be fitted, we need to include it to
+        # self.fit_variance_functions:
+        # self.fit_variance_functions.append("var_lss")
+        # since we do not do it here, var_lss is fixed
+
+    def __parse_config(self, config):
+        """Parse the configuration options
+
+        Arguments
+        ---------
+        config: configparser.SectionProxy
+        Parsed options to initialize class
+
+        Raises
+        ------
+        ExpectedFluxError if iter out prefix is not valid
+        """
+        self.var_lss_value = config.get("var lss value")
+        if self.var_lss_value is None:
+            raise ExpectedFluxError("Missing argument 'var lss value' required "
+                                    "by Dr16FixedVarlssExpectedFlux")
+        if not (self.var_lss_value.endswith(".fits") or
+                self.var_lss_value.endswith(".fits.gz")):
+            try:
+                _ = float(self.var_lss_value)
+            except ValueError as error:
+                raise ExpectedFluxError(
+                    "Wrong argument 'var_lss value' passed to "
+                    "Dr16FixedVarlssExpectedFlux. Expected a fits file or "
+                    f"a float. Found {self.var_lss_value}") from error
diff --git a/py/picca/delta_extraction/expected_fluxes/dr16_fixed_varlss_fudge_expected_flux.py b/py/picca/delta_extraction/expected_fluxes/dr16_fixed_varlss_fudge_expected_flux.py
new file mode 100644
index 000000000..94391c3cf
--- /dev/null
+++ b/py/picca/delta_extraction/expected_fluxes/dr16_fixed_varlss_fudge_expected_flux.py
@@ -0,0 +1,39 @@
+"""This module defines the class Dr16FixedVarlssFudgeExpectedFlux"""
+from picca.delta_extraction.expected_fluxes.dr16_fixed_varlss_expected_flux import (
+    Dr16FixedVarlssExpectedFlux)
+from picca.delta_extraction.expected_fluxes.dr16_fixed_varlss_expected_flux import (
+    defaults, accepted_options)
+from picca.delta_extraction.expected_fluxes.dr16_fixed_fudge_expected_flux import (
+    Dr16FixedFudgeExpectedFlux)
+from picca.delta_extraction.expected_fluxes.dr16_fixed_fudge_expected_flux import (
+    defaults as defaults2, accepted_options as accepted_options2)
+from picca.delta_extraction.utils import update_accepted_options, update_default_options
+
+accepted_options = update_accepted_options(accepted_options, accepted_options2)
+accepted_options = update_accepted_options(
+    accepted_options,
+    ["limit var lss", "use constant weight", "use ivar as weight"],
+    remove=True)
+
+defaults = update_default_options(defaults, defaults2)
+
+
+class Dr16FixedVarlssFudgeExpectedFlux(Dr16FixedVarlssExpectedFlux,
+                                       Dr16FixedFudgeExpectedFlux):
+    """Class to the expected flux similar to Dr16ExpectedFlux but fixing both
+    var_lss and fudge
+
+    Methods
+    -------
+    (see Dr16FixedVarlssExpectedFlux in
+     py/picca/delta_extraction/expected_fluxes/dr16_fix_varlss_expected_flux.py)
+    (see Dr16FixedFudgeExpectedFlux in
+     py/picca/delta_extraction/expected_fluxes/dr16_fix_fudge_expected_flux.py)
+
+    Attributes
+    ----------
+    (see Dr16FixedVarlssExpectedFlux in
+     py/picca/delta_extraction/expected_fluxes/dr16_fix_varlss_expected_flux.py)
+    (see Dr16FixedFudgeExpectedFlux in
+     py/picca/delta_extraction/expected_fluxes/dr16_fix_fudge_expected_flux.py)
+    """
diff --git a/py/picca/delta_extraction/expected_fluxes/true_continuum.py b/py/picca/delta_extraction/expected_fluxes/true_continuum.py
index 09e80ff33..e127f21da 100644
--- a/py/picca/delta_extraction/expected_fluxes/true_continuum.py
+++ b/py/picca/delta_extraction/expected_fluxes/true_continuum.py
@@ -10,20 +10,21 @@
 
 from picca.delta_extraction.astronomical_objects.forest import Forest
 from picca.delta_extraction.astronomical_objects.pk1d_forest import Pk1dForest
-from picca.delta_extraction.errors import ExpectedFluxError, AstronomicalObjectError
-from picca.delta_extraction.expected_flux import ExpectedFlux
-from picca.delta_extraction.utils import find_bins
+from picca.delta_extraction.errors import ExpectedFluxError
+from picca.delta_extraction.expected_flux import ExpectedFlux, defaults, accepted_options
+from picca.delta_extraction.utils import (find_bins, update_accepted_options,
+                                          update_default_options)
 
-accepted_options = [
-    "input directory", "iter out prefix", "num processors", "out dir",
-    "raw statistics file", "use constant weight"
-]
+accepted_options = update_accepted_options(accepted_options, [
+    "input directory", "raw statistics file", "use constant weight",
+    "num bins variance"
+])
 
-defaults = {
-    "iter out prefix": "delta_attributes",
+defaults = update_default_options(defaults, {
     "raw statistics file": "",
     "use constant weight": False,
-}
+})
+
 IN_NSIDE = 16
 
 
@@ -43,7 +44,7 @@ class TrueContinuum(ExpectedFlux):
     populate_los_ids
     read_true_continuum
     read_raw_statistics
-    save_delta_attributes
+    save_iteration_step
 
     Attributes
     ----------
@@ -68,6 +69,10 @@ class TrueContinuum(ExpectedFlux):
     of deltas at a given iteration step. Intermediate files will add
     '_iteration{num}.fits.gz' to the prefix for intermediate steps and '.fits.gz'
     for the final results.
+
+    num_bins_variance: int
+    Number of bins to be used to compute variance functions and statistics as
+    a function of wavelength.
     """
 
     def __init__(self, config):
@@ -87,28 +92,13 @@ def __init__(self, config):
 
         # load variables from config
         self.input_directory = None
-        self.iter_out_prefix = None
         self.__parse_config(config)
 
-        # check that Forest class variables are set
-        try:
-            Forest.class_variable_check()
-        except AstronomicalObjectError as error:
-            raise ExpectedFluxError(
-                "Forest class variables need to be set "
-                "before initializing variables here."
-            ) from error
-
         # read large scale structure variance and mean flux
         self.get_var_lss = None
         self.get_mean_flux = None
         self.read_raw_statistics()
 
-        # functions to store mean continuum and weights
-        self.get_mean_cont = None
-        self.get_mean_cont_weight = None
-
-
     def __parse_config(self, config):
         """Parse the configuration options
 
@@ -119,7 +109,7 @@ def __parse_config(self, config):
 
         Raises
         ------
-        ExpectedFluxError if iter out prefix is not valid
+        ExpectedFluxError if variables are not valid
         """
         self.input_directory = config.get("input directory")
         if self.input_directory is None:
@@ -127,17 +117,6 @@ def __parse_config(self, config):
                 "Missing argument 'input directory' required "
                 "by TrueContinuum")
 
-        self.iter_out_prefix = config.get("iter out prefix")
-        if self.iter_out_prefix is None:
-            raise ExpectedFluxError(
-                "Missing argument 'iter out prefix' required "
-                "by TrueContinuum")
-        if "/" in self.iter_out_prefix:
-            raise ExpectedFluxError(
-                "Error constructing TrueContinuum. "
-                "'iter out prefix' should not incude folders. "
-                f"Found: {self.iter_out_prefix}")
-
         self.use_constant_weight = config.getboolean("use constant weight")
         self.raw_statistics_filename = config.get("raw statistics file")
 
@@ -155,12 +134,36 @@ def compute_expected_flux(self, forests):
         """
         forests = self.read_all_true_continua(forests)
 
+        # the might be some small changes in the var_lss compared to the read
+        # values due to some smoothing of the forests
+        # thus, we recompute it from the actual deltas
+        self.compute_var_lss(forests)
+        # note that this does not change the output deltas but might slightly
+        # affect the mean continuum so we have to compute it after updating
+        # var_lss
         self.compute_mean_cont(forests)
 
+        self.compute_delta_stack(forests)
+
+        self.save_iteration_step(iteration=-1)
+
         # now loop over forests to populate los_ids
         self.populate_los_ids(forests)
-        # Save delta atributes
-        self.save_delta_attributes()
+
+    def compute_forest_variance(self, forest, continuum):
+        """Compute the forest variance
+
+        Arguments
+        ---------
+        forest: Forest
+        A forest instance where the variance will be computed
+
+        continuum: array of float
+        Quasar continuum associated with the forest
+        """
+        var_pipe = 1. / forest.ivar / forest.continuum**2
+        var_lss = self.get_var_lss(forest.log_lambda)
+        return var_lss + var_pipe
 
     def compute_mean_cont(self, forests):
         """Compute the mean quasar continuum over the whole sample.
@@ -184,10 +187,8 @@ def compute_mean_cont(self, forests):
             if self.use_constant_weight:
                 weights = np.ones_like(forest.log_lambda)
             else:
-                var_lss = self.get_var_lss(forest.log_lambda)
-                var_pipe = 1. / forest.ivar / forest.continuum**2
-                variance = var_lss + var_pipe
-                weights = 1 / variance
+                weights = 1. / self.compute_forest_variance(
+                    forest, forest.continuum)
             cont = np.bincount(bins, weights=forest.continuum * weights)
             mean_cont[:len(cont)] += cont
             cont_weight = np.bincount(bins, weights=weights)
@@ -206,6 +207,25 @@ def compute_mean_cont(self, forests):
                                              fill_value=0.0,
                                              bounds_error=False)
 
+    def hdu_var_func(self, results):
+        """Add to the results file an HDU with the variance functions
+
+        Arguments
+        ---------
+        results: fitsio.FITS
+        The open fits file
+        """
+        values = [
+            self.log_lambda_var_func_grid,
+            self.get_var_lss(self.log_lambda_var_func_grid),
+        ]
+        names = [
+            "loglam",
+            "var_lss",
+        ]
+
+        results.write(values, names=names, extname='VAR_FUNC')
+
     def populate_los_ids(self, forests):
         """Populate the dictionary los_ids with the mean expected flux, weights,
         and inverse variance arrays for each line-of-sight.
@@ -223,17 +243,15 @@ def populate_los_ids(self, forests):
                 weights = np.ones_like(forest.log_lambda)
                 mean_expected_flux = forest.continuum
             else:
-                var_lss = self.get_var_lss(forest.log_lambda)
-
                 mean_expected_flux = forest.continuum
-                var_pipe = 1. / forest.ivar / forest.continuum**2
-                variance = var_lss + var_pipe
-                weights = 1. / variance
+                weights = 1. / self.compute_forest_variance(
+                    forest, forest.continuum)
 
             forest_info = {
                 "mean expected flux": mean_expected_flux,
                 "weights": weights,
-                "continuum": forest.continuum,}
+                "continuum": forest.continuum,
+            }
             if isinstance(forest, Pk1dForest):
                 ivar = forest.ivar * mean_expected_flux**2
 
@@ -366,8 +384,7 @@ def read_raw_statistics(self):
             else:
                 raise ExpectedFluxError(
                     "Couldn't find compatible raw satistics file. Provide a "
-                    "custom one using 'raw statistics file' field."
-                )
+                    "custom one using 'raw statistics file' field.")
         self.logger.info(
             f'Reading raw statistics var_lss and mean_flux from file: {filename}'
         )
@@ -376,8 +393,7 @@ def read_raw_statistics(self):
             hdul = fitsio.FITS(filename)
         except IOError as error:
             raise ExpectedFluxError(
-                f"raw statistics file {filename} couldn't be loaded"
-            ) from error
+                f"raw statistics file {filename} couldn't be loaded") from error
 
         header = hdul[1].read_header()
         if Forest.wave_solution == "log":
@@ -405,8 +421,7 @@ def read_raw_statistics(self):
                     f"input\t{log_lambda_min}\t{log_lambda_max}\t"
                     f"{log_lambda_rest_min}\t{log_lambda_rest_max}"
                     "provide a custom file in 'raw statistics file' field "
-                    "matching input pixelization scheme"
-                )
+                    "matching input pixelization scheme")
             log_lambda = hdul[1]['LAMBDA'][:]
         elif Forest.wave_solution == "lin":
             pixel_step = 10**Forest.log_lambda_grid[
@@ -434,8 +449,7 @@ def read_raw_statistics(self):
                     f"{header['LR_MIN']}\t{header['LR_MAX']}\t{header['DEL_L']}"
                     f"input\t{lambda_min}\t{lambda_max}\t{lambda_rest_min}\t"
                     f"{lambda_rest_max} provide a custom file in 'raw "
-                    "statistics file' field matching input pixelization scheme"
-                )
+                    "statistics file' field matching input pixelization scheme")
             log_lambda = np.log10(hdul[1]['LAMBDA'][:])
 
         flux_variance = hdul[1]['VAR'][:]
@@ -454,24 +468,29 @@ def read_raw_statistics(self):
                                       fill_value='extrapolate',
                                       kind='nearest')
 
-    def save_delta_attributes(self):
-        """Save mean continuum in the delta attributes file.
+    def compute_var_lss(self, forests):
+        """Compute var lss from delta variance by substracting
+        the pipeline variance from it
 
-        Raise
-        -----
-        ExpectedFluxError if Forest.wave_solution is not 'lin' or 'log'
-        """
-        iter_out_file = self.iter_out_prefix + ".fits.gz"
-
-        with fitsio.FITS(self.out_dir + iter_out_file, 'rw',
-                         clobber=True) as results:
-            header = {}
-            header["FITORDER"] = -1
-            results.write([
-                Forest.log_lambda_rest_frame_grid,
-                self.get_mean_cont(Forest.log_lambda_rest_frame_grid),
-                self.get_mean_cont_weight(Forest.log_lambda_rest_frame_grid),
-            ],
-                          names=['loglam_rest', 'mean_cont', 'weight'],
-                          extname='CONT',
-                          header=header)
+        Arguments
+        ---------
+        forests: List of Forest
+        A list of Forest from which to compute the deltas."""
+        var_lss = np.zeros_like(Forest.log_lambda_grid)
+        counts = np.zeros_like(Forest.log_lambda_grid)
+
+        for forest in forests:
+            log_lambda_bins = find_bins(forest.log_lambda,
+                                        Forest.log_lambda_grid,
+                                        Forest.wave_solution)
+            var_pipe = 1. / forest.ivar / forest.continuum**2
+            deltas = forest.flux / forest.continuum - 1
+            var_lss[log_lambda_bins] += deltas**2 - var_pipe
+            counts[log_lambda_bins] += 1
+
+        w = counts > 0
+        var_lss[w] /= counts[w]
+        self.get_var_lss = interp1d(Forest.log_lambda_grid[w],
+                                    var_lss[w],
+                                    fill_value='extrapolate',
+                                    kind='nearest')
diff --git a/py/picca/delta_extraction/least_squares/__init__.py b/py/picca/delta_extraction/least_squares/__init__.py
new file mode 100644
index 000000000..6322bd127
--- /dev/null
+++ b/py/picca/delta_extraction/least_squares/__init__.py
@@ -0,0 +1,3 @@
+"""Initialize python package logger"""
+import logging
+logging.getLogger(__name__).addHandler(logging.NullHandler())
diff --git a/py/picca/delta_extraction/least_squares/least_squares_cont_model.py b/py/picca/delta_extraction/least_squares/least_squares_cont_model.py
new file mode 100644
index 000000000..988011bf6
--- /dev/null
+++ b/py/picca/delta_extraction/least_squares/least_squares_cont_model.py
@@ -0,0 +1,91 @@
+"""This module defines the class LeastsSquaresContModel"""
+import numpy as np
+
+
+class LeastsSquaresContModel:
+    """This class deals with the continuum fitting.
+
+    It is passed to iminuit and when called it will return the chi2 for a given
+    set of parameters
+
+    Methods
+    -------
+    __init__
+    __call__
+
+    Attributes
+    ----------
+    forest: Forest
+    Forest instance where the model is fit
+
+    expected_flux: Dr16ExpectedFlux
+    Dr16ExpectedFlux instance running the fit
+
+    mean_cont_kwargs: dict
+    kwargs passed to expected_flux.get_continuum_model
+
+    weights_kwargs: dict
+    kwargs passed to expected_flux.get_continuum_weights
+    """
+
+    def __init__(self,
+                 forest,
+                 expected_flux,
+                 mean_cont_kwargs=None,
+                 weights_kwargs=None):
+        """Initialize class instances
+
+        Arguments
+        ---------
+        forest: Forest
+        The forest to fit
+
+        expected_flux: Dr16ExpectedFlux
+        The expected flux instance
+
+        mean_cont_kwargs: dict or None - default = None
+        kwargs needed by method get_continuum_model of expected_flux. If None
+        then it will be assigned an empty dictionary
+
+        weights_kwargs: dict or None - default = None
+        kwargs needed by method get_continuum_weights of expected_flux. If None
+        then it will be assigned an empty dictionary
+        """
+        self.forest = forest
+        self.expected_flux = expected_flux
+        if mean_cont_kwargs is None:
+            self.mean_cont_kwargs = {}
+        else:
+            self.mean_cont_kwargs = mean_cont_kwargs
+        if weights_kwargs is None:
+            self.weights_kwargs = {}
+        else:
+            self.weights_kwargs = weights_kwargs
+
+    def __call__(self, zero_point, slope):
+        """
+        Compute chi2 for a given set of parameters
+
+        Arguments
+        ---------
+        zero_point: float
+        Zero point of the linear function (flux mean). Referred to as $a_q$ in
+        du Mas des Bourboux et al. 2020
+
+        slope: float
+        Slope of the linear function (evolution of the flux). Referred to as
+        $b_q$ in du Mas des Bourboux et al. 2020
+
+        Returns
+        -------
+        chi2: float
+        The chi2 for this run
+        """
+        cont_model = self.expected_flux.get_continuum_model(
+            self.forest, zero_point, slope, **self.mean_cont_kwargs)
+
+        weights = self.expected_flux.get_continuum_weights(
+            self.forest, cont_model, **self.weights_kwargs)
+
+        chi2_contribution = (self.forest.flux - cont_model)**2 * weights
+        return chi2_contribution.sum() - np.log(weights).sum()
diff --git a/py/picca/delta_extraction/least_squares/least_squares_var_stats.py b/py/picca/delta_extraction/least_squares/least_squares_var_stats.py
new file mode 100644
index 000000000..4638e7b64
--- /dev/null
+++ b/py/picca/delta_extraction/least_squares/least_squares_var_stats.py
@@ -0,0 +1,217 @@
+"""This module defines the class LeastsSquaresVarStats"""
+import numpy as np
+
+from picca.delta_extraction.astronomical_objects.forest import Forest
+from picca.delta_extraction.utils import find_bins
+
+VAR_PIPE_MIN = np.log10(1e-5)
+VAR_PIPE_MAX = np.log10(2.)
+NUM_VAR_BINS = 100
+
+FUDGE_REF = 1e-7
+
+
+class LeastsSquaresVarStats:
+    """This class deals with the continuum fitting.
+
+    It is passed to iminuit and when called it will return the chi2 for a given
+    set of parameters
+
+    Methods
+    -------
+    __init__
+    __call__
+    initialize_delta_arrays
+    get_num_pixels
+    set_fit_bins
+
+    Attributes
+    ----------
+    log_lambda_var_func_grid: array of float
+    Wavelength array where variance functions will be computed.
+
+    num_bins_variance: int
+    Number of bins to be used to compute variance functions and statistics
+    as a function of wavelength.
+
+    num_pixels: array of int
+    Number of pixels participating in each bin of var_delta and var2_delta
+
+    num_qso: array of int
+    Number of quasars participating in each bin of var_delta and var2_delta
+
+    running_indexs: (int, int)
+    Tuple indicating the selected bins for the fits (fits are
+    wavelength-independent)
+
+    var2_delta: array of float
+    Square of the total variance of deltas for a bin in wavelength and pipeline
+    variance. Dimension is (num_bins_variance, num_var_bins)
+
+    var_delta: array of float
+    Total variance of deltas for a bin in wavelength and pipeline variance.
+    Dimension is (num_bins_variance, num_var_bins)
+
+    var_pipe_values: array of float
+    Array where the variance functions will be computed
+    """
+
+    def __init__(
+        self,
+        num_bins_variance,
+        forests,
+        log_lambda_var_func_grid,
+        min_num_qso_in_fit,
+    ):
+        """Initialize class instances
+
+        Arguments
+        ---------
+        num_bins_variance: int
+        Number of bins to be used to compute variance functions and statistics
+        as a function of wavelength.
+
+        forests: list of Forest
+        A list of Forest from which to compute the deltas.
+
+        log_lambda_var_func_grid: array of float
+        Wavelength array where variance functions will be computed.
+
+        min_num_qso_in_fit: int
+        Minimum number of quasars contributing to a bin of wavelength and pipeline
+        variance in order to consider it in the fit
+        """
+        self.num_bins_variance = num_bins_variance
+        self.log_lambda_var_func_grid = log_lambda_var_func_grid
+        self.min_num_qso_in_fit = min_num_qso_in_fit
+
+        # define an array to contain the possible values of pipeline variances
+        # the measured pipeline variance of the deltas will be averaged using the
+        # same binning, and the two arrays will be compared to fit the functions
+        # eta, var_lss, and fudge
+        self.var_pipe_values = 10**(
+            VAR_PIPE_MIN + ((np.arange(NUM_VAR_BINS) + .5) *
+                            (VAR_PIPE_MAX - VAR_PIPE_MIN) / NUM_VAR_BINS))
+
+        # initialize arrays to compute the statistics of deltas
+        self.var_delta = None
+        self.var2_delta = None
+        self.num_pixels = None
+        self.num_qso = None
+        self.initialize_delta_arrays(forests)
+
+        self.running_indexs = (np.nan, np.nan)
+
+    def __call__(self, eta, var_lss, fudge):
+        """Compute the chi2 of the fit of eta, var_lss, and fudge for a
+        wavelength bin
+
+        Arguments
+        ---------
+        eta: float
+        Correction factor to the contribution of the pipeline
+        estimate of the instrumental noise to the variance.
+
+        var_lss: float
+        Pixel variance due to the Large Scale Strucure
+
+        fudge: float
+        Fudge contribution to the pixel variance
+
+        Returns
+        -------
+        chi2: float
+        The chi2 for this run
+        """
+        variance = eta * self.var_pipe_values + var_lss + fudge * FUDGE_REF / self.var_pipe_values
+        chi2_contribution = (
+            self.var_delta[self.running_indexs[0]:self.running_indexs[1]] -
+            variance)
+        weights = self.var2_delta[self.running_indexs[0]:self.running_indexs[1]]
+        w = self.num_qso[self.running_indexs[0]:
+                         self.running_indexs[1]] > self.min_num_qso_in_fit
+        return np.sum(chi2_contribution[w]**2 / weights[w])
+
+    def initialize_delta_arrays(self, forests):
+        """Initialize arrays to compute the statistics of deltas
+
+        Arguments
+        ---------
+        forests: list of Forest
+        A list of Forest from which to compute the deltas.
+        """
+        var_delta = np.zeros(self.num_bins_variance * NUM_VAR_BINS)
+        mean_delta = np.zeros(self.num_bins_variance * NUM_VAR_BINS)
+        var2_delta = np.zeros(self.num_bins_variance * NUM_VAR_BINS)
+        num_pixels = np.zeros(self.num_bins_variance * NUM_VAR_BINS)
+        num_qso = np.zeros(self.num_bins_variance * NUM_VAR_BINS)
+
+        # compute delta statistics, binning the variance according to 'ivar'
+        for forest in forests:
+            # ignore forest if continuum could not be computed
+            if forest.continuum is None:
+                continue
+            var_pipe = 1 / forest.ivar / forest.continuum**2
+            w = ((np.log10(var_pipe) > VAR_PIPE_MIN) &
+                 (np.log10(var_pipe) < VAR_PIPE_MAX))
+
+            # select the pipeline variance bins
+            var_pipe_bins = np.floor(
+                (np.log10(var_pipe[w]) - VAR_PIPE_MIN) /
+                (VAR_PIPE_MAX - VAR_PIPE_MIN) * NUM_VAR_BINS).astype(int)
+
+            # select the wavelength bins
+            log_lambda_bins = find_bins(forest.log_lambda[w],
+                                        self.log_lambda_var_func_grid,
+                                        Forest.wave_solution)
+
+            # compute overall bin
+            bins = var_pipe_bins + NUM_VAR_BINS * log_lambda_bins
+
+            # compute deltas
+            delta = (forest.flux / forest.continuum - 1)
+            delta = delta[w]
+
+            # add contributions to delta statistics
+            rebin = np.bincount(bins, weights=delta)
+            mean_delta[:len(rebin)] += rebin
+
+            rebin = np.bincount(bins, weights=delta**2)
+            var_delta[:len(rebin)] += rebin
+
+            rebin = np.bincount(bins, weights=delta**4)
+            var2_delta[:len(rebin)] += rebin
+
+            rebin = np.bincount(bins)
+            num_pixels[:len(rebin)] += rebin
+            num_qso[np.unique(bins)] += 1
+
+        # normalise and finish the computation of delta statistics
+        w = num_pixels > 0
+        var_delta[w] /= num_pixels[w]
+        mean_delta[w] /= num_pixels[w]
+        var_delta -= mean_delta**2
+        var2_delta[w] /= num_pixels[w]
+        var2_delta -= var_delta**2
+        var2_delta[w] /= num_pixels[w]
+
+        self.var_delta = var_delta
+        self.var2_delta = var2_delta
+        self.num_qso = num_qso
+        self.num_pixels = num_pixels
+
+    def get_num_pixels(self):
+        """Return the number of pixels participating in the fit"""
+        return self.num_pixels[self.running_indexs[0]:self.
+                               running_indexs[1]].sum()
+
+    def set_fit_bins(self, index):
+        """Set the  selected bins for the fits
+        (fits are wavelength-independent)
+
+        Arguments
+        ---------
+        index: int
+        Index of the wavelength grid activated to fit
+        """
+        self.running_indexs = (index * NUM_VAR_BINS, (index + 1) * NUM_VAR_BINS)
diff --git a/py/picca/delta_extraction/quasar_catalogues/desi_quasar_catalogue.py b/py/picca/delta_extraction/quasar_catalogues/desi_quasar_catalogue.py
index 693dcbf5e..f40956d91 100644
--- a/py/picca/delta_extraction/quasar_catalogues/desi_quasar_catalogue.py
+++ b/py/picca/delta_extraction/quasar_catalogues/desi_quasar_catalogue.py
@@ -10,9 +10,11 @@
 
 from picca.delta_extraction.errors import QuasarCatalogueError
 from picca.delta_extraction.quasar_catalogue import QuasarCatalogue, accepted_options
+from picca.delta_extraction.utils import update_accepted_options
 
-accepted_options = sorted(list(set(accepted_options + [
-    "catalogue", "in_nside", "keep surveys"])))
+accepted_options = update_accepted_options(
+    accepted_options,
+    ["catalogue", "in_nside", "keep surveys"])
 
 defaults = {
     "keep surveys": "all",
diff --git a/py/picca/delta_extraction/quasar_catalogues/drq_catalogue.py b/py/picca/delta_extraction/quasar_catalogues/drq_catalogue.py
index 75ea143b3..69b3a2139 100644
--- a/py/picca/delta_extraction/quasar_catalogues/drq_catalogue.py
+++ b/py/picca/delta_extraction/quasar_catalogues/drq_catalogue.py
@@ -10,8 +10,11 @@
 from picca.delta_extraction.errors import QuasarCatalogueError
 from picca.delta_extraction.quasar_catalogue import QuasarCatalogue, accepted_options
 
-accepted_options = sorted(list(set(accepted_options + [
-    "best obs", "BI max", "drq catalogue", "input directory", "keep BAL", "spAll"])))
+from picca.delta_extraction.utils import update_accepted_options
+
+accepted_options = update_accepted_options(
+    accepted_options,
+    ["best obs", "BI max", "drq catalogue", "input directory", "keep BAL", "spAll"])
 
 defaults = {
     "best obs": False,
diff --git a/py/picca/delta_extraction/utils.py b/py/picca/delta_extraction/utils.py
index 5674d684a..83c9e332c 100644
--- a/py/picca/delta_extraction/utils.py
+++ b/py/picca/delta_extraction/utils.py
@@ -265,3 +265,69 @@ def setup_logger(logging_level_console=logging.DEBUG,
 
     # sets up numba logger
     #logging.getLogger('numba').setLevel(logging.WARNING)
+
+def update_accepted_options(accepted_options, new_options, remove=False):
+    """Update the content of the list of accepted options
+
+    Arguments
+    ---------
+    accepted_options: list of string
+    The current accepted options
+
+    new_options: list of string
+    The new options
+
+    remove: bool - Default: False
+    If True, then remove the elements of new_options from accepted_options.
+    If False, then add new_options to accepted_options
+
+    Return
+    ------
+    accepted_options: list of string
+    The updated accepted options
+    """
+    if remove:
+        accepted_options = accepted_options.copy()
+        for item in new_options:
+            if item in accepted_options:
+                accepted_options.remove(item)
+    else:
+        accepted_options = sorted(list(set(accepted_options + new_options)))
+
+    return accepted_options
+
+def update_default_options(default_options, new_options):
+    """Update the content of the list of accepted options
+
+    Arguments
+    ---------
+    default_options: dict
+    The current default options
+
+    new_options: dict
+    The new options
+
+    Return
+    ------
+    default_options: dict
+    The updated default options
+    """
+    default_options = default_options.copy()
+    for key, value in new_options.items():
+        if key in default_options:
+            default_value = default_options.get(key)
+            if type(default_value) is not type(value):
+                raise DeltaExtractionError(
+                    f"Incompatible defaults are being added. Key {key} "
+                    "found to have values with different type: "
+                    f"{type(default_value)} and {type(value)}. "
+                    "Revise your recent changes or contact picca developpers.")
+            if default_value != value:
+                raise DeltaExtractionError(
+                    f"Incompatible defaults are being added. Key {key} "
+                    f"found to have two default values: '{value}' and '{default_value}' "
+                    "Revise your recent changes or contact picca developpers.")
+        else:
+            default_options[key] = value
+
+    return default_options
diff --git a/setup.py b/setup.py
index d36084610..ea2aac46f 100644
--- a/setup.py
+++ b/setup.py
@@ -25,7 +25,8 @@
               'picca.delta_extraction.data_catalogues',
               'picca.delta_extraction.expected_fluxes',
               'picca.delta_extraction.masks',
-              'picca.delta_extraction.quasar_catalogues'],
+              'picca.delta_extraction.quasar_catalogues',
+              'picca.delta_extraction.least_squares'],
     package_dir = {'': 'py'},
     package_data = {'picca': ['fitter2/models/*/*.fits', 'delta_extraction/expected_fluxes/raw_stats/*fits.gz']},
     install_requires=['numpy', 'scipy', 'iminuit', 'healpy', 'fitsio',
diff --git a/tutorials/delta_extraction/picca_delta_extraction_configuration_tutorial.ipynb b/tutorials/delta_extraction/picca_delta_extraction_configuration_tutorial.ipynb
index b613bc7c4..dd26b8eb1 100644
--- a/tutorials/delta_extraction/picca_delta_extraction_configuration_tutorial.ipynb
+++ b/tutorials/delta_extraction/picca_delta_extraction_configuration_tutorial.ipynb
@@ -3,11 +3,12 @@
   {
    "cell_type": "markdown",
    "metadata": {
+    "tags": [],
     "toc": true
    },
    "source": [
     "<h1>Table of Contents<span class=\"tocSkip\"></span></h1>\n",
-    "<div class=\"toc\"><ul class=\"toc-item\"><li><span><a href=\"#Running-picca_delta_extraction\" data-toc-modified-id=\"Running-picca_delta_extraction-1\"><span class=\"toc-item-num\">1&nbsp;&nbsp;</span>Running picca_delta_extraction</a></span></li><li><span><a href=\"#How-to-build-a-config-file:-General-structure\" data-toc-modified-id=\"How-to-build-a-config-file:-General-structure-2\"><span class=\"toc-item-num\">2&nbsp;&nbsp;</span>How to build a config file: General structure</a></span><ul class=\"toc-item\"><li><span><a href=\"#General-section\" data-toc-modified-id=\"General-section-2.1\"><span class=\"toc-item-num\">2.1&nbsp;&nbsp;</span>General section</a></span></li><li><span><a href=\"#Data-section\" data-toc-modified-id=\"Data-section-2.2\"><span class=\"toc-item-num\">2.2&nbsp;&nbsp;</span>Data section</a></span><ul class=\"toc-item\"><li><span><a href=\"#SdssData\" data-toc-modified-id=\"SdssData-2.2.1\"><span class=\"toc-item-num\">2.2.1&nbsp;&nbsp;</span>SdssData</a></span></li><li><span><a href=\"#DesiHealpix\" data-toc-modified-id=\"DesiHealpix-2.2.2\"><span class=\"toc-item-num\">2.2.2&nbsp;&nbsp;</span>DesiHealpix</a></span></li><li><span><a href=\"#DesiTile\" data-toc-modified-id=\"DesiTile-2.2.3\"><span class=\"toc-item-num\">2.2.3&nbsp;&nbsp;</span>DesiTile</a></span></li><li><span><a href=\"#DesisimMocks\" data-toc-modified-id=\"DesisimMocks-2.2.4\"><span class=\"toc-item-num\">2.2.4&nbsp;&nbsp;</span>DesisimMocks</a></span></li></ul></li><li><span><a href=\"#Corrections-section\" data-toc-modified-id=\"Corrections-section-2.3\"><span class=\"toc-item-num\">2.3&nbsp;&nbsp;</span>Corrections section</a></span><ul class=\"toc-item\"><li><span><a href=\"#SdssCalibrationCorrection\" data-toc-modified-id=\"SdssCalibrationCorrection-2.3.1\"><span class=\"toc-item-num\">2.3.1&nbsp;&nbsp;</span>SdssCalibrationCorrection</a></span></li><li><span><a href=\"#SdssDustCorrection\" data-toc-modified-id=\"SdssDustCorrection-2.3.2\"><span class=\"toc-item-num\">2.3.2&nbsp;&nbsp;</span>SdssDustCorrection</a></span></li><li><span><a href=\"#SdssIvarCorrection\" data-toc-modified-id=\"SdssIvarCorrection-2.3.3\"><span class=\"toc-item-num\">2.3.3&nbsp;&nbsp;</span>SdssIvarCorrection</a></span></li><li><span><a href=\"#SdssOpticalDepthCorrection\" data-toc-modified-id=\"SdssOpticalDepthCorrection-2.3.4\"><span class=\"toc-item-num\">2.3.4&nbsp;&nbsp;</span>SdssOpticalDepthCorrection</a></span></li></ul></li><li><span><a href=\"#Masks-section\" data-toc-modified-id=\"Masks-section-2.4\"><span class=\"toc-item-num\">2.4&nbsp;&nbsp;</span>Masks section</a></span><ul class=\"toc-item\"><li><span><a href=\"#AbsorberMask\" data-toc-modified-id=\"AbsorberMask-2.4.1\"><span class=\"toc-item-num\">2.4.1&nbsp;&nbsp;</span>AbsorberMask</a></span></li><li><span><a href=\"#DlaMask\" data-toc-modified-id=\"DlaMask-2.4.2\"><span class=\"toc-item-num\">2.4.2&nbsp;&nbsp;</span>DlaMask</a></span></li><li><span><a href=\"#BalMask\" data-toc-modified-id=\"BalMask-2.4.3\"><span class=\"toc-item-num\">2.4.3&nbsp;&nbsp;</span>BalMask</a></span></li></ul></li><li><span><a href=\"#Expected-Flux-section\" data-toc-modified-id=\"Expected-Flux-section-2.5\"><span class=\"toc-item-num\">2.5&nbsp;&nbsp;</span>Expected Flux section</a></span><ul class=\"toc-item\"><li><span><a href=\"#Dr16ExpectedFlux\" data-toc-modified-id=\"Dr16ExpectedFlux-2.5.1\"><span class=\"toc-item-num\">2.5.1&nbsp;&nbsp;</span>Dr16ExpectedFlux</a></span></li></ul></li></ul></li><li><span><a href=\"#Examples\" data-toc-modified-id=\"Examples-3\"><span class=\"toc-item-num\">3&nbsp;&nbsp;</span>Examples</a></span></li></ul></div>"
+    "<div class=\"toc\"><ul class=\"toc-item\"><li><span><a href=\"#Running-picca_delta_extraction\" data-toc-modified-id=\"Running-picca_delta_extraction-1\"><span class=\"toc-item-num\">1&nbsp;&nbsp;</span>Running picca_delta_extraction</a></span></li><li><span><a href=\"#How-to-build-a-config-file:-General-structure\" data-toc-modified-id=\"How-to-build-a-config-file:-General-structure-2\"><span class=\"toc-item-num\">2&nbsp;&nbsp;</span>How to build a config file: General structure</a></span><ul class=\"toc-item\"><li><span><a href=\"#General-section\" data-toc-modified-id=\"General-section-2.1\"><span class=\"toc-item-num\">2.1&nbsp;&nbsp;</span>General section</a></span></li><li><span><a href=\"#Data-section\" data-toc-modified-id=\"Data-section-2.2\"><span class=\"toc-item-num\">2.2&nbsp;&nbsp;</span>Data section</a></span><ul class=\"toc-item\"><li><span><a href=\"#DesiHealpix\" data-toc-modified-id=\"DesiHealpix-2.2.1\"><span class=\"toc-item-num\">2.2.1&nbsp;&nbsp;</span>DesiHealpix</a></span></li><li><span><a href=\"#DesisimMocks\" data-toc-modified-id=\"DesisimMocks-2.2.2\"><span class=\"toc-item-num\">2.2.2&nbsp;&nbsp;</span>DesisimMocks</a></span></li><li><span><a href=\"#DesiTile\" data-toc-modified-id=\"DesiTile-2.2.3\"><span class=\"toc-item-num\">2.2.3&nbsp;&nbsp;</span>DesiTile</a></span></li><li><span><a href=\"#SdssData\" data-toc-modified-id=\"SdssData-2.2.4\"><span class=\"toc-item-num\">2.2.4&nbsp;&nbsp;</span>SdssData</a></span></li></ul></li><li><span><a href=\"#Corrections-section\" data-toc-modified-id=\"Corrections-section-2.3\"><span class=\"toc-item-num\">2.3&nbsp;&nbsp;</span>Corrections section</a></span><ul class=\"toc-item\"><li><span><a href=\"#SdssCalibrationCorrection\" data-toc-modified-id=\"SdssCalibrationCorrection-2.3.1\"><span class=\"toc-item-num\">2.3.1&nbsp;&nbsp;</span>SdssCalibrationCorrection</a></span></li><li><span><a href=\"#SdssDustCorrection\" data-toc-modified-id=\"SdssDustCorrection-2.3.2\"><span class=\"toc-item-num\">2.3.2&nbsp;&nbsp;</span>SdssDustCorrection</a></span></li><li><span><a href=\"#SdssIvarCorrection\" data-toc-modified-id=\"SdssIvarCorrection-2.3.3\"><span class=\"toc-item-num\">2.3.3&nbsp;&nbsp;</span>SdssIvarCorrection</a></span></li><li><span><a href=\"#SdssOpticalDepthCorrection\" data-toc-modified-id=\"SdssOpticalDepthCorrection-2.3.4\"><span class=\"toc-item-num\">2.3.4&nbsp;&nbsp;</span>SdssOpticalDepthCorrection</a></span></li></ul></li><li><span><a href=\"#Masks-section\" data-toc-modified-id=\"Masks-section-2.4\"><span class=\"toc-item-num\">2.4&nbsp;&nbsp;</span>Masks section</a></span><ul class=\"toc-item\"><li><span><a href=\"#AbsorberMask\" data-toc-modified-id=\"AbsorberMask-2.4.1\"><span class=\"toc-item-num\">2.4.1&nbsp;&nbsp;</span>AbsorberMask</a></span></li><li><span><a href=\"#BalMask\" data-toc-modified-id=\"BalMask-2.4.2\"><span class=\"toc-item-num\">2.4.2&nbsp;&nbsp;</span>BalMask</a></span></li><li><span><a href=\"#DlaMask\" data-toc-modified-id=\"DlaMask-2.4.3\"><span class=\"toc-item-num\">2.4.3&nbsp;&nbsp;</span>DlaMask</a></span></li></ul></li><li><span><a href=\"#Expected-Flux-section\" data-toc-modified-id=\"Expected-Flux-section-2.5\"><span class=\"toc-item-num\">2.5&nbsp;&nbsp;</span>Expected Flux section</a></span><ul class=\"toc-item\"><li><span><a href=\"#ContinuumVarianceExpectedFlux\" data-toc-modified-id=\"ContinuumVarianceExpectedFlux-2.5.1\"><span class=\"toc-item-num\">2.5.1&nbsp;&nbsp;</span>ContinuumVarianceExpectedFlux</a></span></li><li><span><a href=\"#Dr16ExpectedFlux\" data-toc-modified-id=\"Dr16ExpectedFlux-2.5.2\"><span class=\"toc-item-num\">2.5.2&nbsp;&nbsp;</span>Dr16ExpectedFlux</a></span></li><li><span><a href=\"#Dr16FixedEtaExpectedFlux\" data-toc-modified-id=\"Dr16FixedEtaExpectedFlux-2.5.3\"><span class=\"toc-item-num\">2.5.3&nbsp;&nbsp;</span>Dr16FixedEtaExpectedFlux</a></span></li><li><span><a href=\"#Dr16FixedEtaFudgeExpectedFlux\" data-toc-modified-id=\"Dr16FixedEtaFudgeExpectedFlux-2.5.4\"><span class=\"toc-item-num\">2.5.4&nbsp;&nbsp;</span>Dr16FixedEtaFudgeExpectedFlux</a></span></li><li><span><a href=\"#Dr16FixedEtaVarlssExpectedFlux\" data-toc-modified-id=\"Dr16FixedEtaVarlssExpectedFlux-2.5.5\"><span class=\"toc-item-num\">2.5.5&nbsp;&nbsp;</span>Dr16FixedEtaVarlssExpectedFlux</a></span></li><li><span><a href=\"#Dr16FixedEtaVarlssExpectedFlux\" data-toc-modified-id=\"Dr16FixedEtaVarlssExpectedFlux-2.5.6\"><span class=\"toc-item-num\">2.5.6&nbsp;&nbsp;</span>Dr16FixedEtaVarlssExpectedFlux</a></span></li><li><span><a href=\"#Dr16FixedFudgeExpectedFlux\" data-toc-modified-id=\"Dr16FixedFudgeExpectedFlux-2.5.7\"><span class=\"toc-item-num\">2.5.7&nbsp;&nbsp;</span>Dr16FixedFudgeExpectedFlux</a></span></li><li><span><a href=\"#Dr16FixedVarlssExpectedFlux\" data-toc-modified-id=\"Dr16FixedVarlssExpectedFlux-2.5.8\"><span class=\"toc-item-num\">2.5.8&nbsp;&nbsp;</span>Dr16FixedVarlssExpectedFlux</a></span></li><li><span><a href=\"#Dr16FixedVarlssFudgeExpectedFlux\" data-toc-modified-id=\"Dr16FixedVarlssFudgeExpectedFlux-2.5.9\"><span class=\"toc-item-num\">2.5.9&nbsp;&nbsp;</span>Dr16FixedVarlssFudgeExpectedFlux</a></span></li><li><span><a href=\"#TrueContinuum\" data-toc-modified-id=\"TrueContinuum-2.5.10\"><span class=\"toc-item-num\">2.5.10&nbsp;&nbsp;</span>TrueContinuum</a></span></li></ul></li></ul></li><li><span><a href=\"#Examples\" data-toc-modified-id=\"Examples-3\"><span class=\"toc-item-num\">3&nbsp;&nbsp;</span>Examples</a></span></li></ul></div>"
    ]
   },
   {
@@ -31,7 +32,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 3,
+   "execution_count": 1,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -39,7 +40,7 @@
     "import sys\n",
     "import os\n",
     "sys.path.append(os.path.expanduser('~/software/picca/bin/')) # this should be changed with your path to picca\n",
-    "from picca_delta_extraction import main as delta_extraction"
+    "from picca import delta_extraction"
    ]
   },
   {
@@ -61,7 +62,7 @@
     "args = parser.parse_args(\"my_config.ini\") \n",
     "\n",
     "print(\"WARNING: depending on the configuration file used this might take a lot of time\")\n",
-    "delta_extraction(args)\n"
+    "delta_extraction(args)"
    ]
   },
   {
@@ -69,11 +70,10 @@
    "metadata": {},
    "source": [
     "Some questions you might have:\n",
-    "- What if I want to run without saving the configuration in a file? Unfortunatly no, at least for now. A different initialisation of the Config class would need to be coded.\n",
-    "- Can I check the configuration of a previous run? Yes, the configuration for a given run is stored at a file named .config.ini in the output folder \n",
-    "- How is the code working? You can take a look at the Workflow and Data Model diagrams under `doc/`\n",
-    "- Can I use enviroment variables in my config arguments? Yes, they will be expanded before calling the specified file\n",
-    "\n",
+    "- What if I want to run without saving the configuration in a file? Unfortunatly this is not possible, at least for now. A different initialisation of the Config class would need to be coded.\n",
+    "- Can I check the configuration of a previous run? Yes, the configuration for a given run is stored at a file named .config.ini in the output folder. \n",
+    "- How is the code working? You can take a look at the Workflow and Data Model diagrams under `doc/`. This might be a bit outdated but we are working on improving them.\n",
+    "- Can I use enviroment variables in my config arguments? Yes, they will be expanded before calling the specified file.\n",
     "- How can I create my own config? This is where things start to get tricky. We are now going to review how to build a configuration file, and the different options that are available."
    ]
   },
@@ -89,17 +89,22 @@
     "\n",
     "To add an argument to this section specify it simply:\n",
     "\n",
-    "`\n",
-    "my_string_argument = \"a string\"\n",
-    "my_int_argument = 1\n",
-    "my_float_argument = 1.4\n",
-    "my_bool_argument = True\n",
-    "also_a_bool_argument = yes\n",
+    "`my_string_argument = \"a string\"`\n",
+    "\n",
+    "`also_a_string_argument = another string`\n",
+    "\n",
+    "`my_int_argument = 1`\n",
+    "\n",
+    "`my_float_argument = 1.4`\n",
+    "\n",
+    "`my_bool_argument = True`\n",
+    "\n",
+    "`also_a_bool_argument = yes`\n",
     "`\n",
     "\n",
     "Note that the arguments and sections are not ordered, but all the arguments in a given section will need to be placed before the next section begins.\n",
     "\n",
-    "Now that we have seen a short general introduction on config files, let's move to the more specific task at hand: how to build a config file for `picca_delta_extraction`. In this configuration we need some sections to be present and each section will require some specific parameters. Depending on the options, other sections might be required/used, but we'll come back to this later. These are the mandatory sections:\n",
+    "Now that we have seen a short general introduction on config files, let's move to the more specific task at hand: how to build a config file for `picca.delta_extraction`. In this configuration we need some sections to be present and each section will require some specific parameters. Depending on the options, other sections might be required/used, but we'll come back to this later. These are the mandatory sections:\n",
     "- `[general]`\n",
     "- `[data]`\n",
     "- `[corrections]`\n",
@@ -142,7 +147,7 @@
     "- `lambda max rest frame`: Upper limit on rest frame wavelength [Angstrom] **Type: float, Required: no, Default: 1200.0**\n",
     "- `lambda min`: Lower limit on observed wavelength [Angstrom] **Type: float, Required: no, Default: 3600.0**\n",
     "- `lambda min rest frame`: Lower limit on rest frame wavelength [Angstrom] **Type: float, Required: no, Default: 1040.0**\n",
-    "- `minimal snr`: Minimal S/N ratio required for forests to be accepted. **Type: float, Required: no, Default: 0 for `analysis type == BAO 3D` analyses, 1 for `analysis type == Pk 1D`\n",
+    "- `minimal snr`: Minimal S/N ratio required for forests to be accepted. **Type: float, Required: no, Default: 0 for `analysis type == BAO 3D`, 1 for `analysis type == Pk 1D`\n",
     "- `minimum number pixels in forest`: Minimum number of pixels in a forest. Forests with less pixels will be dropped. **Type: int, Required: no, Default: 50**\n",
     "- `max num spec`: Maximum number of spectra to read. None for no maximum. **Type: int or None, Required: no, Default: None**\n",
     "- `rejection log file`: Filelame of the rejection log. Must have extension .fits or .fits.gz **Type: str, Required: no, Default: \"rejection_log.fits.gz\"**\n",
@@ -150,60 +155,68 @@
     "- `z min`: Minimum redshift. Quasars with redshifts lower than z_min will be discarded. If not specified will be computed at runtime base on the values of `lambda min` and `lambda max rest frame` as $z_{\\rm min} = \\max\\left(0, \\lambda_{\\rm min} / \\lambda_{\\rm max, rf} - 1\\right)$ **Type: float, Required: False**\n",
     "\n",
     "Other arguments will be passed to the constructor of the selected class. Let's review the arguments required by the available Data types\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### DesiHealpix\n",
     "\n",
+    "- `blinding`: Selected blinding strategy (\"none\" for no blinding). Available strategies listed in `py/picca/delta_extraction/utils.py` in variable `ACCEPTED_BLINDING_STRATEGIES`. For the moment, blinding strategy \"corr_yshift\" is automatically engaged for main survey data, and blinding strategy \"none\" is automatically engaged for SV data or mocks. **Type: str, Required: no, Default: \"corr_yshift\"**\n",
+    "- `catalogue`: Name the quasar catalogue. **Type: str, Required: yes**\n",
+    "- `delta lambda`: Variation of the wavelength (in Angs) between two pixels. Ignored unless `wave solution` is \"lin\" **Type: float, Required: no, Default: 0.8**\n",
+    "- `delta log lambda`: Variation of the logarithm of the wavelength (in Angs) between two pixels. Ignored unless `wave solution` is \"log\"  **Type: float, Required: no, Default: 3e-4**\n",
+    "- `keep surveys`: Only keep the entries in the catalogue that have a \"SURVEY\" specified in field. Ignored if \"SURVEY\" column is not present in the catalogue. Multiple values can be added spearated by white spaces. Specifying \"all\" is equivalent to specifying \"sv1 sv2 sv3 main\". Accepted values are \"sv1\", \"sv2\", \"sv3\", \"main\", \"all\" and \"special\" **Type: str, Required: no, Default: \"all\"**\n",
+    "- `wave solution`: Use linear (\"lin\") or logarithmic (\"log\") wavelength solution. **Type: str, Required: no, Default: \"lin\"**"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "jp-MarkdownHeadingCollapsed": true,
+    "tags": []
+   },
+   "source": [
+    "### DesisimMocks\n",
+    "- `blinding`: Selected blinding strategy (\"none\" for no blinding). Available strategies listed in `py/picca/delta_extraction/utils.py` in variable `ACCEPTED_BLINDING_STRATEGIES`. For the moment, blinding strategy \"corr_yshift\" is automatically engaged for main survey data, and blinding strategy \"none\" is automatically engaged for SV data or mocks. **Type: str, Required: no, Default: \"corr_yshift\"**\n",
+    "- `catalogue`: Name the quasar catalogue. **Type: str, Required: yes**\n",
+    "- `delta lambda`: Variation of the wavelength (in Angs) between two pixels. Ignored unless `wave solution` is \"lin\" **Type: float, Required: no, Default: 0.8**\n",
+    "- `delta log lambda`: Variation of the logarithm of the wavelength (in Angs) between two pixels. Ignored unless `wave solution` is \"log\"  **Type: float, Required: no, Default: 3e-4**\n",
+    "- `keep surveys`: Only keep the entries in the catalogue that have a \"SURVEY\" specified in field. Ignored if \"SURVEY\" column is not present in the catalogue. Multiple values can be added spearated by white spaces. Specifying \"all\" is equivalent to specifying \"sv1 sv2 sv3 main\". Accepted values are \"sv1\", \"sv2\", \"sv3\", \"main\", \"all\" and \"special\" **Type: str, Required: no, Default: \"all\"**\n",
+    "- `wave solution`: Use linear (\"lin\") or logarithmic (\"log\") wavelength solution. **Type: str, Required: no, Default: \"lin\"**\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### DesiTile\n",
+    "\n",
+    "- `blinding`: Selected blinding strategy (\"none\" for no blinding). Available strategies listed in `py/picca/delta_extraction/utils.py` in variable `ACCEPTED_BLINDING_STRATEGIES`. For the moment, blinding strategy \"corr_yshift\" is automatically engaged for main survey data, and blinding strategy \"none\" is automatically engaged for SV data or mocks. **Type: str, Required: no, Default: \"corr_yshift\"**\n",
+    "- `catalogue`: Name the quasar catalogue. **Type: str, Required: yes**\n",
+    "- `delta lambda`: Variation of the wavelength (in Angs) between two pixels. Ignored unless `wave solution` is \"lin\" **Type: float, Required: no, Default: 0.8**\n",
+    "- `delta log lambda`: Variation of the logarithm of the wavelength (in Angs) between two pixels. Ignored unless `wave solution` is \"log\"  **Type: float, Required: no, Default: 3e-4**\n",
+    "- `keep surveys`: Only keep the entries in the catalogue that have a \"SURVEY\" specified in field. Ignored if \"SURVEY\" column is not present in the catalogue. Multiple values can be added spearated by white spaces. Specifying \"all\" is equivalent to specifying \"sv1 sv2 sv3 main\". Accepted values are \"sv1\", \"sv2\", \"sv3\", \"main\", \"all\" and \"special\" **Type: str, Required: no, Default: \"all\"**\n",
+    "- `wave solution`: Use linear (\"lin\") or logarithmic (\"log\") wavelength solution. **Type: str, Required: no, Default: \"lin\"**"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
     "###  SdssData\n",
     "\n",
     "will always use `wave solution = log`\n",
     "\n",
     "- `best obs`: If True, reads only the best observation for objects with repeated observations **Type: bool, Required: no, Default: False**\n",
-    "- `BI max`: Maximum value allowed for the Balnicity Index to keep the quasar **Type: float or None, Required: no**\n",
+    "- `BI max`: Maximum value allowed for the Balnicity Index to keep the quasar. None for no maximum **Type: float or None, Required: no, Default: None**\n",
     "- `drq catalogue`: Name of the quasar catalogue (in DRQ format) **Type: str, Required: yes** \n",
     "- `keep BAL`: If False, remove the quasars flagged as having a Broad Absorption Line. Ignored if bi_max is not None **Type: str, Required: no, Default: False**\n",
     "- `mode`: Reading mode. Currently supported reading modes are \"spplate\" and \"spec\". **Type: str, Required: no, Default: \"spplate\"**\n",
     "- `rebin`: Rebin wavelength grid by combining this number of adjacent pixels (ivar weight). **Type: int, Required: no, Default: 3**\n",
-    "- `rejection log file`: Filelame of the rejection log. Must have extension .fits or .fits.gz **Type: str, Required: no, Default: \"rejection_log.fits.gz\"**\n",
-    "- `spAll`: Path to the spAll file required for multiple observations. If not given, it will be looked for using `input directory`. **Type: str, Required: no**\n",
-    "- `z max`: Maximum redshift. Quasars with redshifts higher than or equal to z_max will be discarded. If not specified will be computed at runtime base on the values of `lambda max` and `lambda min rest frame` as $z_{\\rm max} = \\max\\left(0, \\lambda_{\\rm max} / \\lambda_{\\rm min, rf} - 1\\right)$ **Type: float, Required: False, Default: 3.5**\n",
-    "- `z min`: Minimum redshift. Quasars with redshifts lower than z_min will be discarded. If not specified will be computed at runtime base on the values of `lambda min` and `lambda max rest frame` as $z_{\\rm min} = \\max\\left(0, \\lambda_{\\rm min} / \\lambda_{\\rm max, rf} - 1\\right)$ **Type: float, Required: False**\n",
-    "\n",
-    "\n",
-    "### DesiHealpix\n",
-    "\n",
-    "- `blinding`: Selected blinding strategy (\"none\" for no blinding). Available strategies listed in `py/picca/delta_extraction/utils.py` in variable `ACCEPTED_BLINDING_STRATEGIES`. For the moment, blinding strategy \"corr_yshift\" is automatically engaged for main survey data, and blinding strategy \"none\" is automatically engaged for SV data or mocks. **Type: str, Required: no, Default: \"corr_yshift\"**\n",
-    "- `catalogue`: Name the z_truth catalogue. **Type: str, Required: yes**\n",
-    "- `delta lambda`: Variation of the wavelength (in Angs) between two pixels. Ignored if `wave solution` is \"lin\" **Type: float, Required: no, Default: 1.0**\n",
-    "- `delta log lambda`: Variation of the logarithm of the wavelength (in Angs) between two pixels. Ignored if `wave solution` is \"log\"  **Type: float, Required: no, Default: 1e-4**\n",
-    "- `keep surveys`: Only keep the entries in the catalogue that have a \"SURVEY\" specified in field. Ignored if \"SURVEY\" column is not present in the catalogue. Multiple values can be added spearated by white spaces. Specifying \"all\" is equivalent to specifying \"sv1 sv2 sv3 main\". Accepted values are \"sv1\", \"sv2\", \"sv3\", \"main\", \"all\" and \"special\" **Type: str, Required: no, Default: \"all\"**\n",
-    "- `wave solution`: Use linear (lin) or logarithmic wavelength solution. **Type: str, Required: no, Default: \"lin\"**\n",
-    "- `delta lambda`: Variation of the wavelength (in Angs) between two pixels. Ignored if `wave solution` is \"lin\" **Type: float, Required: no, Default: 1.0**\n",
-    "- `delta log lambda`: Variation of the logarithm of the wavelength (in Angs) between two pixels. Ignored if `wave solution` is \"log\"  **Type: float, Required: no, Default: 1e-4**\n",
-    "\n",
-    "\n",
-    "\n",
-    "### DesiTile\n",
-    "\n",
-    "- `blinding`: Selected blinding strategy (\"none\" for no blinding). Available strategies listed in `py/picca/delta_extraction/utils.py` in variable `ACCEPTED_BLINDING_STRATEGIES`. For the moment, blinding strategy \"corr_yshift\" is automatically engaged for main survey data, and blinding strategy \"none\" is automatically engaged for SV data or mocks. **Type: str, Required: no, Default: \"corr_yshift\"**\n",
-    "- `catalogue`: Name the z_truth catalogue. **Type: str, Required: yes**\n",
-    "- `delta lambda`: Variation of the wavelength (in Angs) between two pixels. Ignored if `wave solution` is \"lin\" **Type: float, Required: no, Default: 1.0**\n",
-    "- `delta log lambda`: Variation of the logarithm of the wavelength (in Angs) between two pixels. Ignored if `wave solution` is \"log\"  **Type: float, Required: no, Default: 1e-4**\n",
-    "- `keep surveys`: Only keep the entries in the catalogue that have a \"SURVEY\" specified in field. Ignored if \"SURVEY\" column is not present in the catalogue. Multiple values can be added spearated by white spaces. Specifying \"all\" is equivalent to specifying \"sv1 sv2 sv3 main\". Accepted values are \"sv1\", \"sv2\", \"sv3\", \"main\", \"all\" and \"special\" **Type: str, Required: no, Default: \"all\"**\n",
-    "- `rejection log file`: Filelame of the rejection log. Must have extension .fits or .fits.gz **Type: str, Required: no, Default: \"rejection_log.fits.gz\"**\n",
-    "- `use all`: Read using the all directory. **Type: bool, Required: no, Default: False**\n",
-    "- `use single nights`: Read using only nights specified within the cat **Type: bool, Required: no, Default: False**\n",
-    "- `wave solution`: Use linear (lin) or logarithmic wavelength solution. **Type: str, Required: no, Default: \"lin\"**\n",
-    "- `z max`: Maximum redshift. Quasars with redshifts higher than or equal to z_max will be discarded. If not specified will be computed at runtime base on the values of `lambda max` and `lambda min rest frame` as $z_{\\rm max} = \\max\\left(0, \\lambda_{\\rm max} / \\lambda_{\\rm min, rf} - 1\\right)$\n",
-    "- `z min`: Minimum redshift. Quasars with redshifts lower than z_min will be discarded. If not specified will be computed at runtime base on the values of `lambda min` and `lambda max rest frame` as $z_{\\rm min} = \\max\\left(0, \\lambda_{\\rm min} / \\lambda_{\\rm max, rf} - 1\\right)$ **Type: float, Required: False**\n",
-    "\n",
-    "### DesisimMocks\n",
-    "- `analysis type`: Selected analysis type. Current options are \"BAO 3D\" or \"PK 1D\" **Type: str, Required: no, Default: \"BAO 3D\"\n",
-    "- `blinding`: Selected blinding strategy (\"none\" for no blinding). Available strategies listed in `py/picca/delta_extraction/utils.py` in variable `ACCEPTED_BLINDING_STRATEGIES`. For the moment, blinding strategy \"corr_yshift\" is automatically engaged for main survey data, and blinding strategy \"none\" is automatically engaged for SV data or mocks. **Type: str, Required: no, Default: \"corr_yshift\"**\n",
-    "- `catalogue`: Name the z_truth catalogue. **Type: str, Required: yes**\n",
-    "- `delta lambda`: Variation of the wavelength (in Angs) between two pixels. Ignored if `wave solution` is \"lin\" **Type: float, Required: no, Default: 1.0**\n",
-    "- `delta log lambda`: Variation of the logarithm of the wavelength (in Angs) between two pixels. Ignored if `wave solution` is \"log\"  **Type: float, Required: no, Default: 1e-4**\n",
-    "- `keep surveys`: Only keep the entries in the catalogue that have a \"SURVEY\" specified in field. Ignored if \"SURVEY\" column is not present in the catalogue. Multiple values can be added spearated by white spaces. Specifying \"all\" is equivalent to specifying \"sv1 sv2 sv3 main\". Accepted values are \"sv1\", \"sv2\", \"sv3\", \"main\", \"all\" and \"special\" **Type: str, Required: no, Default: \"all\"**\n",
-    "- `wave solution`: Use linear (lin) or logarithmic wavelength solution. **Type: str, Required: no, Default: \"lin\"**\n",
-    "- `z max`: Maximum redshift. Quasars with redshifts higher than or equal to z_max will be discarded. If not specified will be computed at runtime base on the values of `lambda max` and `lambda min rest frame` as $z_{\\rm max} = \\max\\left(0, \\lambda_{\\rm max} / \\lambda_{\\rm min, rf} - 1\\right)$\n",
-    "- `z min`: Minimum redshift. Quasars with redshifts lower than z_min will be discarded. If not specified will be computed at runtime base on the values of `lambda min` and `lambda max rest frame` as $z_{\\rm min} = \\max\\left(0, \\lambda_{\\rm min} / \\lambda_{\\rm max, rf} - 1\\right)$ **Type: float, Required: False**"
+    "- `spAll`: Path to the spAll file required for multiple observations. If not given, it will be looked for using `input directory`. **Type: str, Required: no**\n"
    ]
   },
   {
@@ -213,32 +226,61 @@
     "## Corrections section\n",
     "This section controls the number and types of corrections that will be applied to data. Unlike the data section, the arguments will be passed in separate specific sections as different corrections might require arguments with the same name but with different values. Let's see how do we do this. At least one argument must be passed:\n",
     "- `num corrections`: Number of corrections. **Type: non-negative int, Required=yes**\n",
+    "\n",
     "This variable controls the number of corrections we will load. If the value is 0, no corrections will be loaded. In all other cases, we need the subsequent variables\n",
-    "- `type 0`: Contains the name of the first correction. Basically can be any data type stored in the folder `py/picca/delta_extraction/corrections/`. Arguments for this correction should be passed in section `[correction arguments 0]``\n",
-    " **Type: str**\n",
-    "- `type 1`: Similarly for the second correction\n",
+    "- `type 0`: Contains the name of the first correction. Basically can be any data type stored in the folder `py/picca/delta_extraction/corrections/`. Arguments for this correction should be passed in section `[correction arguments 0]`  **Type: str, Required: only if `num_corrections` is > 0**\n",
+    "- `type 1`: Similarly for the second correction **Type: str, Required: only if `num_corrections` is > 1**\n",
     "- ...\n",
-    "- `type 'n-1'`: Similarly for the nth correction. \n",
-    "As many arguments as specified in `num corrections` are required. If the Cth correction does not require any argument, then the section `[correction arguments C]` is optional. Optionally we can pass the arguments\n",
-    "- `module name 0`: Name of the file containing the correction type specified in `type 0`. If the file is named following the convention this should normally not be necessary. **Type: str**\n",
+    "- `type 'n-1'`: Similarly for the nth correction. **Type: str, Required: only if `num_corrections` is > n-1**\n",
+    "\n",
+    "As many arguments as specified in `num corrections` are required. If the Xth correction does not require any argument, then the section `[correction arguments X]` is optional. \n",
+    "\n",
+    "Optionally we can pass the arguments\n",
+    "- `module name 0`: Name of the file containing the correction type specified in `type 0`. If the file is named following the convention this should normally not be necessary. **Type: str, Required: no**\n",
     "- ...\n",
-    "- `module name 'n-1'`: Similarly for the correction type specified in `type 'n-1'`.\n",
+    "- `module name 'n-1'`: Similarly for the correction type specified in `type 'n-1'`. **Type: str, Required: no**\n",
     "\n",
     "Let's review the arguments required by the available Corrections\n",
-    " \n",
+    " "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
     "### SdssCalibrationCorrection\n",
     "- `filename`: Path to the file containing the multiplicative errors in the pipeline flux calibration. Must contain extension STACK_DELTAS with fields 'LOGLAM' and 'STACK' **Type: str, Required: yes**\n",
-    "\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
     "### SdssDustCorrection\n",
     "- `filename`: Path to DRQ catalog of objects for dust map to apply the Schlegel correction. Must contain extension EXTINCTION with fields THING_ID' and 'EXTINCTION' **Type: str, Required: yes**\n",
-    "\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
     "### SdssIvarCorrection\n",
     "- `filename`: Path to the fits file containing the multiplicative errors in the ivar calibration. Must contain extension VAR_FUNC with fields 'LOGLAM' and 'STACK' **Type: str, Required: yes**\n",
-    "\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
     "### SdssOpticalDepthCorrection\n",
     "- `optical depth tau`: White spaced list of $\\tau$ for each of the optical depth absorbers **Type: list of float, Required: yes**\n",
     "- `optical depth gamma` White spaced list of $\\gamma$ for each of the optical depth absorbers **Type: list of float, Required: yes**\n",
-    "- `optical depth absorber` White spaced list of absorbers names for each of the optical depth absorbers. Names should match the species specifie in the dictionary `ABSORBER_IGM` specified in `py/picca/delta_extraction/utils.py` **Type: list of string, Required: yes**"
+    "- `optical depth absorber` White spaced list of absorbers names for each of the optical depth absorbers. Names should match the species specifie in the dictionary `ABSORBER_IGM` specified in `py/picca/delta_extraction/utils.py` **Type: list of string, Required: yes**\n",
+    "\n",
+    "Note that all three arguments must have lists of the same length"
    ]
   },
   {
@@ -247,36 +289,56 @@
    "source": [
     "## Masks section\n",
     "This section controls the number and types of masks that will be applied. It is constructed in a similar way as the corrections section above. At least one argument must be passed:\n",
-    "- `num masks`: Number of masks. **Type: non-negative int, Required=yes**\n",
+    "- `num masks`: Number of masks. **Type: non-negative int, Required: yes**\n",
+    "\n",
     "This variable controls the number of masks we will load. If the value is 0, no masks will be loaded. In all other cases, we need the subsequent variables\n",
-    "- `type 0`: Contains the name of the first mask. Basically can be any data type stored in the folder `py/picca/delta_extraction/corrections/`. Arguments for this correction should be passed in section [mask arguments 0]\n",
-    "- `type 1`: Similarly for the second mask\n",
-    "- ...\n",
-    "- `type 'n-1'`: Similarly for the nth mask. \n",
-    "As many arguments as specified in `num masks` are required. If the Cth correction does not require any argument, then the section `[mask arguments C]` is optional.  Optionally we can pass the arguments\n",
-    "- `module name 0`: Name of the file containing the mask type specified in `type 0`. If the file is named following the convention this should normally not be necessary. **Type: str**\n",
+    "- `type 0`: Contains the name of the first mask. Basically can be any data type stored in the folder `py/picca/delta_extraction/corrections/`. Arguments for this correction should be passed in section [mask arguments 0]. **Type: str, Required: only if `num_masks` is > 0**\n",
+    "- `type 1`: Similarly for the second mask. **Type: str, Required: only if `num_masks` is > 1**\n",
     "- ...\n",
-    "- `module name 'n-1'`: Similarly for the mask type specified in `type 'n-1'`.\n",
+    "- `type 'n-1'`: Similarly for the nth mask. **Type: str, Required: only if `num_masks` is > n-1**\n",
     "\n",
-    "Let's review the arguments required by the available Masks\n",
+    "As many arguments as specified in `num masks` are required. If the Xth mask does not require any argument, then the section `[mask arguments X]` is optional.  Optionally we can pass the arguments\n",
+    "- `module name 0`: Name of the file containing the mask type specified in `type 0`. If the file is named following the convention this should normally not be necessary. **Type: str, Required: no**\n",
+    "- ...\n",
+    "- `module name 'n-1'`: Similarly for the mask type specified in `type 'n-1'`.  **Type: str, Required: no**\n",
     "\n",
+    "Let's review the arguments required by the available Masks\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
     "### AbsorberMask\n",
     "- `absorber mask width`: Mask width on each side of the absorber central observed wavelength in units of 1e4*dlog10(lambda) **Type: float, Required: no, Default: 2.5**\n",
     "- `filename`: Absorber catalog file **Type: str, Required: yes**\n",
-    "- `los_id name`: Name of the line of sight identifier (e.g. THING_ID in SDSS or TARGETID in DESI). **Type: str, Required: no, Default: THING_ID**\n",
-    "\n",
-    "### DlaMask\n",
-    "- `dla mask limit`: Lower limit on the DLA transmission. Transmissions below this number are masked. **Type: float, Required: no, Default: 0.8**\n",
-    "- `filename`: DLA catalog file. **Type: str, Required: yes**\n",
-    "- `los_id name`: Name of the line of sight identifier (e.g. THING_ID in SDSS or TARGETID in DESI). **Type: str, Required: no, Default: THING_ID**\n",
-    "- `mask file`: File with regions to mask in lambda_RF. In file each line is: 'region_name region_min region_max RF_DLA' Wavelenths are in [Angstrom] **Type: str, Required: no**\n",
-    "\n",
+    "- `los_id name`: Name of the line of sight identifier (e.g. THING_ID in SDSS or TARGETID in DESI). **Type: str, Required: no, Default: THING_ID**\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "jp-MarkdownHeadingCollapsed": true,
+    "tags": []
+   },
+   "source": [
     "### BalMask\n",
     "- `bal index type`: BAL index type, choose either 'ai' or 'bi'. This will set which velocity the  BAL mask uses. **Type: str, Required: no, Default: 'ai'**\n",
     "- `filename`: BAL catalog file. **Type: str, Required: yes**\n",
     "- `los_id name`: Name of the line of sight identifier (e.g. THING_ID in SDSS or TARGETID in DESI). **Type: str, Required: no, Default: THING_ID**\n"
    ]
   },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### DlaMask\n",
+    "- `dla mask limit`: Lower limit on the DLA transmission. Transmissions below this number are masked. **Type: float, Required: no, Default: 0.8**\n",
+    "- `filename`: DLA catalog file. **Type: str, Required: yes**\n",
+    "- `los_id name`: Name of the line of sight identifier (e.g. THING_ID in SDSS or TARGETID in DESI). **Type: str, Required: no, Default: THING_ID**\n",
+    "- `mask file`: File with regions to mask in lambda_RF. In file each line is: 'region_name region_min region_max RF_DLA' Wavelenths are in [Angstrom] **Type: str, Required: no**\n"
+   ]
+  },
   {
    "cell_type": "markdown",
    "metadata": {},
@@ -287,23 +349,160 @@
     "- `module_name`: Name of the file containing the expected flux type. If the file is named following the convention this shoul normally not be necessary. **Type: str, Required: no**\n",
     "- `num processors`: Number of processors to be used to compute the mean continua and to read in data for DesiHealpix based modes. 0 will use half the number of available cores.  **Type: int, Required: no, Default: 0**\n",
     "\n",
-    "Other arguments will be passed to the constructor of the selected class. Let's review the arguments required by the available ExpectedFlux types\n",
-    "\n",
+    "Other arguments will be passed to the constructor of the selected class. Let's review the arguments required by the available ExpectedFlux types\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### ContinuumVarianceExpectedFlux\n",
+    "- `iter out prefix`: Prefix of the iteration files. These file contain the statistical properties of deltas at a given iteration step. Intermediate files will add '_iteration{num}.fits.gz' to the prefix for intermediate steps and '.fits.gz' for the final results. The prefix should not contain any folders. **Type: str, Required: no**\n",
+    "- `num bins variance`: Number of bins to be used to compute variance functions and statistics as a function of wavelength. **Type: int, Required: no, Default: 20**\n",
+    "- `order`: Order of the polynomial for the continuum fit. **Type: int, Required: no, Default: 1**\n",
+    "- `var lss file`: Name of the file containing the LSS variance contribution. **Type: str, Required: yes**\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
     "### Dr16ExpectedFlux\n",
+    "- `force stack delta to zero`: If True, continuum is corrected by stack_delta. **Type: bool, Required: no, Default: True**\n",
     "- `iter out prefix`: Prefix of the iteration files. These file contain the statistical properties of deltas at a given iteration step. Intermediate files will add '_iteration{num}.fits.gz' to the prefix for intermediate steps and '.fits.gz' for the final results. The prefix should not contain any folders. **Type: str, Required: no**\n",
-    "- `limit eta`: Limits on function eta. Format is minimum,maximum. **Type: list of float, Required: no: Default: 0.1,1.5**\n",
-    "- `limit var lss`: Limits on eta function var_lss. Format is minimum,maximum. **Type: list of float, Required: no: Default: 0.0,0.3**\n",
+    "- `limit eta`: Limits on function eta. Format is minimum,maximum. **Type: list of float, Required: no, Default: 0.1,1.5**\n",
+    "- `limit var lss`: Limits on eta function var_lss. Format is minimum,maximum. **Type: list of float, Required: no, Default: 0.0,0.3**\n",
     "- `num bins variance`: Number of bins to be used to compute variance functions and statistics as a function of wavelength. **Type: int, Required: no, Default: 20**\n",
     "- `num iterations`: Number of iterations to determine the mean continuum shape, LSS variances, etc. **Type: int, Required: no, Default: 5**\n",
     "- `order`: Order of the polynomial for the continuum fit. **Type: int, Required: no, Default: 1**\n",
     "- `use constant weight`: If \"True\", set all the delta weights to one (implemented as eta = 0, sigma_lss = 1, fudge = 0) **Type: bool, Required: no, Default: False**\n",
     "- `use ivar as weight`: If \"True\", use ivar as weights (implemented as eta = 1, sigma_lss = fudge = 0) **Type: bool, Required: no, Default: False**\n",
-    "- `force stack delta to zero`: If \"True\" (Default), continuum is corrected by stack_delta. **Type: bool, Required: no, Default: True**\n",
-    "\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Dr16FixedEtaExpectedFlux\n",
+    "- `eta value`: If a string, name of the file containing the eta values as a function of\n",
+    "    wavelength. If a float, the eta value will be applied to all wavelengths **Type: str or float, Required: no, Default: 1.0**\n",
+    "- `force stack delta to zero`: If True, continuum is corrected by stack_delta. **Type: bool, Required: no, Default: True**\n",
+    "- `iter out prefix`: Prefix of the iteration files. These file contain the statistical properties of deltas at a given iteration step. Intermediate files will add '_iteration{num}.fits.gz' to the prefix for intermediate steps and '.fits.gz' for the final results. The prefix should not contain any folders. **Type: str, Required: no**\n",
+    "- `limit var lss`: Limits on eta function var_lss. Format is minimum,maximum. **Type: list of float, Required: no, Default: 0.0,0.3**\n",
+    "- `num bins variance`: Number of bins to be used to compute variance functions and statistics as a function of wavelength. **Type: int, Required: no, Default: 20**\n",
+    "- `num iterations`: Number of iterations to determine the mean continuum shape, LSS variances, etc. **Type: int, Required: no, Default: 5**\n",
+    "- `order`: Order of the polynomial for the continuum fit. **Type: int, Required: no, Default: 1**\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Dr16FixedEtaFudgeExpectedFlux\n",
+    "- `eta value`: If a string, name of the file containing the eta values as a function of\n",
+    "    wavelength. If a float, the eta value will be applied to all wavelengths **Type: str or float, Required: no, Default: 1.0**\n",
+    "- `force stack delta to zero`: If True, continuum is corrected by stack_delta. **Type: bool, Required: no, Default: True**\n",
+    "- `fudge value`: If a string, name of the file containing the fudge values as a function of\n",
+    "    wavelength. If a float, the fudge value will be applied to all wavelengths **Type: str or float, Required: no, Default: 0.0**\n",
+    "- `iter out prefix`: Prefix of the iteration files. These file contain the statistical properties of deltas at a given iteration step. Intermediate files will add '_iteration{num}.fits.gz' to the prefix for intermediate steps and '.fits.gz' for the final results. The prefix should not contain any folders. **Type: str, Required: no**\n",
+    "- `limit var lss`: Limits on eta function var_lss. Format is minimum,maximum. **Type: list of float, Required: no, Default: 0.0,0.3**\n",
+    "- `num bins variance`: Number of bins to be used to compute variance functions and statistics as a function of wavelength. **Type: int, Required: no, Default: 20**\n",
+    "- `num iterations`: Number of iterations to determine the mean continuum shape, LSS variances, etc. **Type: int, Required: no, Default: 5**\n",
+    "- `order`: Order of the polynomial for the continuum fit. **Type: int, Required: no, Default: 1**\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Dr16FixedEtaVarlssExpectedFlux\n",
+    "- `eta value`: If a string, name of the file containing the eta values as a function of\n",
+    "    wavelength. If a float, the eta value will be applied to all wavelengths **Type: str or float, Required: no, Default: 1.0**\n",
+    "- `force stack delta to zero`: If True, continuum is corrected by stack_delta. **Type: bool, Required: no, Default: True**\n",
+    "- `iter out prefix`: Prefix of the iteration files. These file contain the statistical properties of deltas at a given iteration step. Intermediate files will add '_iteration{num}.fits.gz' to the prefix for intermediate steps and '.fits.gz' for the final results. The prefix should not contain any folders. **Type: str, Required: no**\n",
+    "- `num bins variance`: Number of bins to be used to compute variance functions and statistics as a function of wavelength. **Type: int, Required: no, Default: 20**\n",
+    "- `num iterations`: Number of iterations to determine the mean continuum shape, LSS variances, etc. **Type: int, Required: no, Default: 5**\n",
+    "- `order`: Order of the polynomial for the continuum fit. **Type: int, Required: no, Default: 1**\n",
+    "- `var_lss value`: If a string, name of the file containing the var_lss values as a function of\n",
+    "    wavelength. If a float, the var_lss value will be applied to all wavelengths **Type: str or float, Required: no, Default: 1.0**"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Dr16FixedEtaVarlssExpectedFlux\n",
+    "- `eta value`: If a string, name of the file containing the eta values as a function of\n",
+    "    wavelength. If a float, the eta value will be applied to all wavelengths **Type: str or float, Required: no, Default: 1.0**\n",
+    "- `force stack delta to zero`: If True, continuum is corrected by stack_delta. **Type: bool, Required: no, Default: True**\n",
+    "- `fudge value`: If a string, name of the file containing the fudge values as a function of\n",
+    "    wavelength. If a float, the fudge value will be applied to all wavelengths **Type: str or float, Required: no, Default: 0.0**\n",
+    "- `iter out prefix`: Prefix of the iteration files. These file contain the statistical properties of deltas at a given iteration step. Intermediate files will add '_iteration{num}.fits.gz' to the prefix for intermediate steps and '.fits.gz' for the final results. The prefix should not contain any folders. **Type: str, Required: no**\n",
+    "- `num bins variance`: Number of bins to be used to compute variance functions and statistics as a function of wavelength. **Type: int, Required: no, Default: 20**\n",
+    "- `order`: Order of the polynomial for the continuum fit. **Type: int, Required: no, Default: 1**\n",
+    "- `var_lss value`: If a string, name of the file containing the var_lss values as a function of\n",
+    "    wavelength. If a float, the var_lss value will be applied to all wavelengths **Type: str or float, Required: no, Default: 1.0**"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Dr16FixedFudgeExpectedFlux\n",
+    "- `force stack delta to zero`: If True, continuum is corrected by stack_delta. **Type: bool, Required: no, Default: True**\n",
+    "- `fudge value`: If a string, name of the file containing the fudge values as a function of\n",
+    "    wavelength. If a float, the fudge value will be applied to all wavelengths **Type: str or float, Required: no, Default: 0.0**\n",
+    "- `iter out prefix`: Prefix of the iteration files. These file contain the statistical properties of deltas at a given iteration step. Intermediate files will add '_iteration{num}.fits.gz' to the prefix for intermediate steps and '.fits.gz' for the final results. The prefix should not contain any folders. **Type: str, Required: no**\n",
+    "- `limit eta`: Limits on function eta. Format is minimum,maximum. **Type: list of float, Required: no, Default: 0.1,1.5**\n",
+    "- `limit var lss`: Limits on eta function var_lss. Format is minimum,maximum. **Type: list of float, Required: no, Default: 0.0,0.3**\n",
+    "- `num bins variance`: Number of bins to be used to compute variance functions and statistics as a function of wavelength. **Type: int, Required: no, Default: 20**\n",
+    "- `num iterations`: Number of iterations to determine the mean continuum shape, LSS variances, etc. **Type: int, Required: no, Default: 5**\n",
+    "- `order`: Order of the polynomial for the continuum fit. **Type: int, Required: no, Default: 1**\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Dr16FixedVarlssExpectedFlux\n",
+    "- `force stack delta to zero`: If True, continuum is corrected by stack_delta. **Type: bool, Required: no, Default: True**\n",
+    "- `iter out prefix`: Prefix of the iteration files. These file contain the statistical properties of deltas at a given iteration step. Intermediate files will add '_iteration{num}.fits.gz' to the prefix for intermediate steps and '.fits.gz' for the final results. The prefix should not contain any folders. **Type: str, Required: no**\n",
+    "- `limit eta`: Limits on function eta. Format is minimum,maximum. **Type: list of float, Required: no, Default: 0.1,1.5**\n",
+    "- `num bins variance`: Number of bins to be used to compute variance functions and statistics as a function of wavelength. **Type: int, Required: no, Default: 20**\n",
+    "- `num iterations`: Number of iterations to determine the mean continuum shape, LSS variances, etc. **Type: int, Required: no, Default: 5**\n",
+    "- `order`: Order of the polynomial for the continuum fit. **Type: int, Required: no, Default: 1**\n",
+    "- `var_lss value`: If a string, name of the file containing the var_lss values as a function of\n",
+    "    wavelength. If a float, the var_lss value will be applied to all wavelengths **Type: str or float, Required: no, Default: 1.0**"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Dr16FixedVarlssFudgeExpectedFlux\n",
+    "- `force stack delta to zero`: If True, continuum is corrected by stack_delta. **Type: bool, Required: no, Default: True**\n",
+    "- `fudge value`: If a string, name of the file containing the fudge values as a function of\n",
+    "    wavelength. If a float, the fudge value will be applied to all wavelengths **Type: str or float, Required: no, Default: 0.0**\n",
+    "- `iter out prefix`: Prefix of the iteration files. These file contain the statistical properties of deltas at a given iteration step. Intermediate files will add '_iteration{num}.fits.gz' to the prefix for intermediate steps and '.fits.gz' for the final results. The prefix should not contain any folders. **Type: str, Required: no**\n",
+    "- `limit eta`: Limits on function eta. Format is minimum,maximum. **Type: list of float, Required: no, Default: 0.1,1.5**\n",
+    "- `num bins variance`: Number of bins to be used to compute variance functions and statistics as a function of wavelength. **Type: int, Required: no, Default: 20**\n",
+    "- `num iterations`: Number of iterations to determine the mean continuum shape, LSS variances, etc. **Type: int, Required: no, Default: 5**\n",
+    "- `order`: Order of the polynomial for the continuum fit. **Type: int, Required: no, Default: 1**\n",
+    "- `var_lss value`: If a string, name of the file containing the var_lss values as a function of\n",
+    "    wavelength. If a float, the var_lss value will be applied to all wavelengths **Type: str or float, Required: no, Default: 1.0**"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
     "### TrueContinuum\n",
     "- `input directory`: Directory to spectra files. **Type: str, Required: yes**\n",
     "- `iter out prefix`: Prefix of the iteration files. These file contain the statistical properties of deltas at a given iteration step. Intermediate files will add '_iteration{num}.fits.gz' to the prefix for intermediate steps and '.fits.gz' for the final results. For now there is only one iteration available, but this might change in the future. The prefix should not contain any folders. **Type: str, Required: no**\n",
-    "- `var lss binning`: Binning of the var lss file to be used or var lss file. If binning is input, then it should be 'log', 'lin_2.4' or 'lin3.2'. Otherwise the full file name is required.\n"
+    "- `num iterations`: Number of iterations to determine LSS variance. **Type: int, Required: no, Default: 5**\n",
+    "- `raw statistics file`: File containing Large Scale Structure delta variance and mean transmitted flux. Should have the same format as files written by the raw analysis. If empty, the name is inferred based on the run settings (might not work for all settings) **Type: str, Required: no, Default: \"\"**\n",
+    "- `use constant weight`: If \"True\", set all the delta weights to one (implemented as eta = 0, sigma_lss = 1, fudge = 0) **Type: bool, Required: no, Default: False**\n"
    ]
   },
   {
@@ -359,7 +558,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.8.12"
+   "version": "3.9.5"
   },
   "toc": {
    "base_numbering": 1,


Test patch:
diff --git a/py/picca/tests/delta_extraction/data/true_continuum_mean_cont_lin.txt b/py/picca/tests/delta_extraction/data/true_continuum_mean_cont_lin.txt
index a03063541..60e8a5094 100644
--- a/py/picca/tests/delta_extraction/data/true_continuum_mean_cont_lin.txt
+++ b/py/picca/tests/delta_extraction/data/true_continuum_mean_cont_lin.txt
@@ -1,209 +1,209 @@
 # log_lambda mean_cont mean_cont_weight
-3.0171 1.069601139702023 0.0
-3.0174000000000003 1.0419993010293325 0.0
-3.0177000000000005 1.014397462356642 5306.474042289746
-3.0180000000000007 0.9867956236839516 5294.021760034838
-3.018300000000001 0.9591937850112611 5281.56947777993
-3.018600000000001 0.9326818912609627 5283.395072678236
-3.0189000000000012 0.9100396400344148 5335.911559791262
-3.0192000000000014 0.887397388807867 5388.42804690429
-3.0195000000000016 0.8647551375813192 5440.944534017316
-3.019800000000002 0.8611047217085583 5421.286879281904
-3.020100000000002 0.8596969920426175 5393.106406746247
-3.020400000000002 0.8582892623766768 5364.92593421059
-3.0207000000000024 0.8564699019628281 5418.151435658989
-3.0210000000000026 0.8543483111020607 5531.147408638275
-3.0213000000000028 0.8522267202412931 5644.143381617561
-3.021600000000003 0.8498726767099876 5725.446604500891
-3.021900000000003 0.846878689173869 5719.499440572161
-3.0222000000000033 0.8438847016377505 5713.552276643431
-3.0225000000000035 0.8408907141016321 5707.605112714699
-3.0228000000000037 0.8413538734366867 5739.572441829349
-3.023100000000004 0.8419467633626279 5772.962524957343
-3.023400000000004 0.842539653288569 5806.352608085335
-3.0237000000000043 0.8423830155194181 5842.211362366244
-3.0240000000000045 0.8418550797870247 5879.293036863439
-3.0243000000000047 0.8413271440546314 5916.374711360632
-3.024600000000005 0.8439009807121491 5922.142562207038
-3.024900000000005 0.8515118798510735 5877.058942850859
-3.025200000000005 0.8591227789899978 5831.975323494679
-3.0255000000000054 0.8663499154495373 5798.878615370393
-3.0258000000000056 0.8701587923325232 5872.551992803656
-3.026100000000006 0.8739676692155093 5946.225370236917
-3.026400000000006 0.8777765460984953 6019.898747670179
-3.026700000000006 0.8771660953945207 6027.2036762152275
-3.0270000000000064 0.8756387857831988 6020.739427813645
-3.0273000000000065 0.8741114761718768 6014.275179412063
-3.0276000000000067 0.8717971594727604 6052.982485899642
-3.027900000000007 0.868871490446263 6126.779355926344
-3.028200000000007 0.8659458214197655 6200.576225953046
-3.0285000000000073 0.8657012507151736 6249.236130402512
-3.0288000000000075 0.8715723281454354 6240.558026994411
-3.0291000000000077 0.8774434055756973 6231.879923586312
-3.029400000000008 0.8829108936917885 6227.199434636703
-3.029700000000008 0.8813183757128136 6292.449395903941
-3.0300000000000082 0.8797258577338387 6357.699357171179
-3.0303000000000084 0.8781333397548639 6422.949318438417
-3.0306000000000086 0.8726539369361335 6406.776672592006
-3.030900000000009 0.8662666372292984 6371.58536921714
-3.031200000000009 0.8598793375224634 6336.394065842274
-3.031500000000009 0.8554441666991178 6313.2054461204925
-3.0318000000000094 0.8524549815163874 6298.907483341498
-3.0321000000000096 0.8494657963336572 6284.609520562502
-3.0324000000000098 0.8432918953421547 6279.979075080289
-3.03270000000001 0.8310854766327361 6293.660928993976
-3.03300000000001 0.8188790579233176 6307.342782907664
-3.0333000000000103 0.8078470750459367 6325.332692154554
-3.0336000000000105 0.805131273003769 6373.827943814974
-3.0339000000000107 0.8024154709616013 6422.323195475393
-3.034200000000011 0.7996996689194336 6470.818447135813
-3.034500000000011 0.8003539846913071 6469.2427051631685
-3.0348000000000113 0.8013451497261379 6462.662278419399
-3.0351000000000115 0.8023363147609687 6456.08185167563
-3.0354000000000116 0.7989190727666894 6500.180902240672
-3.035700000000012 0.7936272065391834 6565.830815886875
-3.036000000000012 0.7883353403116773 6631.4807295330775
-3.036300000000012 0.7847987013645515 6691.493076959933
-3.0366000000000124 0.7830086459643335 6745.895620737213
-3.0369000000000126 0.7812185905641154 6800.298164514494
-3.037200000000013 0.7790986324080975 6839.256752405816
-3.037500000000013 0.776237085339713 6843.498848098292
-3.037800000000013 0.7733755382713285 6847.740943790769
-3.0381000000000133 0.7724595164582595 6858.641238872024
-3.0384000000000135 0.7856004244150238 6917.648769233773
-3.0387000000000137 0.7987413323717881 6976.656299595523
-3.039000000000014 0.8118822403285524 7035.663829957271
-3.039300000000014 0.8077985335352763 7039.017340050623
-3.0396000000000143 0.802659333462907 7038.960472309679
-3.0399000000000145 0.7975201333905375 7038.903604568734
-3.0402000000000147 0.7962210556556946 7035.833903310403
-3.040500000000015 0.7960696075721615 7031.863809623105
-3.040800000000015 0.7959181594886284 7027.893715935808
-3.0411000000000152 0.7967675668818645 7036.409132516485
-3.0414000000000154 0.798271800531584 7053.09340078338
-3.0417000000000156 0.7997760341813035 7069.777669050274
-3.042000000000016 0.7975767915207481 7090.289175577276
-3.042300000000016 0.790777097738648 7115.554870080931
-3.042600000000016 0.7839774039565479 7140.8205645845865
-3.0429000000000164 0.7794129717349524 7150.2267805079655
-3.0432000000000166 0.780206893520976 7121.614760842761
-3.0435000000000167 0.7810008153069997 7093.002741177555
-3.043800000000017 0.7821461429799087 7067.517791110157
-3.044100000000017 0.785289399386879 7059.811889248937
-3.0444000000000173 0.7884326557938494 7052.105987387717
-3.0447000000000175 0.791532719964646 7044.066473995917
-3.0450000000000177 0.7909555971712643 7007.624819848612
-3.045300000000018 0.7903784743778826 6971.183165701307
-3.045600000000018 0.7898013515845009 6934.7415115540025
-3.0459000000000183 0.7996282094223842 6993.289332805962
-3.0462000000000184 0.81086802120831 7064.737577371333
-3.0465000000000186 0.8221078329942358 7136.185821936704
-3.046800000000019 0.8297656320248782 7242.380361389597
-3.047100000000019 0.8362673805438974 7359.78883968804
-3.047400000000019 0.8427691290629167 7477.197317986482
-3.0477000000000194 0.8468831637794806 7426.375848169542
-3.0480000000000196 0.8496442592127136 7280.231017067008
-3.0483000000000198 0.8524053546459465 7134.086185964474
-3.04860000000002 0.8706178705030277 7123.663561949781
-3.04890000000002 0.9026806736450051 7234.899109646308
-3.0492000000000203 0.9347434767869826 7346.1346573428345
-3.0495000000000205 0.9654634035124666 7410.290441185822
-3.0498000000000207 0.9943515541253399 7410.226177856128
-3.050100000000021 1.0232397047382134 7410.161914526435
-3.050400000000021 1.0390535793767681 7441.954425617782
-3.0507000000000213 1.0277527746998423 7539.814551019007
-3.0510000000000215 1.0164519700229162 7637.674676420232
-3.0513000000000217 1.0107414838191464 7709.217090103242
-3.051600000000022 1.0233049207921494 7694.730801765706
-3.051900000000022 1.0358683577651524 7680.244513428171
-3.0522000000000222 1.0455244797948937 7678.757667946752
-3.0525000000000224 1.038676830120269 7751.063941328685
-3.0528000000000226 1.031829180445644 7823.370214710619
-3.053100000000023 1.02543321623712 7887.936688838972
-3.053400000000023 1.0248716304165217 7852.5289090206725
-3.053700000000023 1.0243100445959237 7817.121129202372
-3.0540000000000234 1.0237365479972904 7781.754330713727
-3.0543000000000236 0.9975248905882036 7834.60057060185
-3.0546000000000237 0.9713132331791169 7887.446810489974
-3.054900000000024 0.9451015757700302 7940.293050378098
-3.055200000000024 0.9430480286229362 7937.991701582229
-3.0555000000000243 0.9426580080478549 7931.8928918855145
-3.0558000000000245 0.9422679874727735 7925.7940821888005
-3.0561000000000247 0.9507017596507354 7947.641675815145
-3.056400000000025 0.9603712035266618 7973.40284499938
-3.056700000000025 0.9700406474025882 7999.164014183616
-3.0570000000000253 1.008213503721353 8020.100041436596
-3.0573000000000254 1.052424243978443 8040.013957844943
-3.0576000000000256 1.0966349842355332 8059.9278742532915
-3.057900000000026 1.090551882088426 8031.442816375785
-3.058200000000026 1.0702546918850961 7989.279199663954
-3.058500000000026 1.0499575016817662 7947.115582952124
-3.0588000000000264 1.0556947791398363 8002.066248947484
-3.0591000000000266 1.0705554094345038 8091.049024918515
-3.0594000000000268 1.0854160397291714 8180.031800889545
-3.059700000000027 1.0788373024514921 8261.058384133334
-3.060000000000027 1.0634043204657466 8338.799139233459
-3.0603000000000273 1.0479713384800013 8416.539894333586
-3.0606000000000275 1.0431107325820004 8458.857831780137
-3.0609000000000277 1.0431962515989974 8484.60374421531
-3.061200000000028 1.0432817706159943 8510.349656650485
-3.061500000000028 1.0457298942405373 8560.555737610925
-3.0618000000000283 1.0493889124229652 8623.29827298172
-3.0621000000000285 1.0530479306053933 8686.040808352514
-3.0624000000000287 1.048132199595891 8693.995241470853
-3.062700000000029 1.0385443506784973 8672.097317634656
-3.063000000000029 1.0289565017611035 8650.19939379846
-3.063300000000029 1.0225619009244278 8668.405040897062
-3.0636000000000294 1.017965659927079 8709.196046088644
-3.0639000000000296 1.0133694189297304 8749.987051280226
-3.06420000000003 1.0223683004946507 8807.598229738467
-3.06450000000003 1.0390684038474065 8874.737522727715
-3.06480000000003 1.0557685072001621 8941.876815716962
-3.0651000000000304 1.0604444470614254 8972.717732391757
-3.0654000000000305 1.0584515102945755 8983.426737718773
-3.0657000000000307 1.0564585735277257 8994.135743045792
-3.066000000000031 1.072878889150575 8945.667329504675
-3.066300000000031 1.0990282325970284 8865.931286404579
-3.0666000000000313 1.1251775760434817 8786.19524330448
-3.0669000000000315 1.1331501366661252 8786.551831189492
-3.0672000000000317 1.1322304987455158 8826.090246985113
-3.067500000000032 1.1313108608249067 8865.628662780735
-3.067800000000032 1.134985697459235 8818.669751732736
-3.0681000000000322 1.1406783461080425 8733.722743626315
-3.0684000000000324 1.1463709947568501 8648.775735519894
-3.0687000000000326 1.156345842238316 8572.48729394738
-3.069000000000033 1.1679507827100621 8499.494885362676
-3.069300000000033 1.1795557231818086 8426.50247677797
-3.069600000000033 1.1899738042189765 8439.847679290047
-3.0699000000000334 1.2000167154722523 8480.484456485043
-3.0702000000000336 1.2100596267255281 8521.121233680038
-3.0705000000000338 1.2204872609722082 8542.308755056141
-3.070800000000034 1.2310102306654227 8558.676695798784
-3.071100000000034 1.2415332003586372 8575.044636541428
-3.0714000000000343 1.2189635664105016 8533.07636171926
-3.0717000000000345 1.1905096656512248 8480.7351993221
-3.0720000000000347 1.1620557648919483 8428.394036924938
-3.072300000000035 1.1573675042260887 8383.721496260563
-3.072600000000035 1.1552419410774726 8339.875878742294
-3.0729000000000353 1.1531163779288562 8296.030261224027
-3.0732000000000355 1.1455681656178829 8240.415562601214
-3.0735000000000356 1.1378073960628499 8184.339539011622
-3.073800000000036 1.131285268645926 8129.875475166025
-3.074100000000036 1.1679883142736949 8131.664332750735
-3.074400000000036 1.204691359901464 8133.453190335446
-3.0747000000000364 1.238059664749073 8135.328009505638
-3.0750000000000366 1.2412039675413626 8137.98193065332
-3.075300000000037 1.2443482703336526 8140.635851801003
-3.075600000000037 1.258026628582184 8133.912705108325
-3.075900000000037 1.3207542572871394 8083.527519754406
-3.0762000000000373 1.3834818859920948 8033.142334400487
-3.0765000000000375 1.4391101047993218 7984.399757356284
-3.0768000000000377 1.4745437321152655 7940.329653696877
-3.077100000000038 1.5099773594312091 7896.259550037471
-3.077400000000038 1.559868926037408 7874.277027789502
-3.0777000000000383 1.6366952868734614 7893.443140102009
-3.0780000000000385 1.713521647709515 7912.609252414516
-3.0783000000000387 1.821515426278323 7912.903513548066
-3.078600000000039 1.9684903115045873 7889.5947399375
-3.078900000000039 2.1154651967308515 7866.285966326934
-3.0792000000000392 2.2624400819571155 0.0
+3.0171 1.0580841904047682 0.0
+3.0174000000000003 1.0329516733687665 0.0
+3.0177000000000005 1.0078191563327648 7107.038020333474
+3.0180000000000007 0.9826866392967631 7091.803260296574
+3.018300000000001 0.9575541222607615 7076.568500259674
+3.018600000000001 0.9337887244283367 7069.9130638916495
+3.0189000000000012 0.914877023784194 7093.716887447732
+3.0192000000000014 0.8959653231400513 7117.520711003814
+3.0195000000000016 0.8770536224959086 7141.324534559896
+3.019800000000002 0.8662708304762088 7020.97127391672
+3.020100000000002 0.8564479557530174 6883.594955821406
+3.020400000000002 0.8466250810298258 6746.218637726091
+3.0207000000000024 0.8432406525080902 6768.021686608148
+3.0210000000000026 0.8445835056163568 6906.698539175534
+3.0213000000000028 0.8459263587246234 7045.375391742921
+3.021600000000003 0.8457832495235215 7151.660380685157
+3.021900000000003 0.8415492745601237 7168.770317847379
+3.0222000000000033 0.837315299596726 7185.880255009602
+3.0225000000000035 0.8330813246333284 7202.990192171825
+3.0228000000000037 0.8339275582793554 7314.035392372673
+3.023100000000004 0.8349644284500329 7428.605544689584
+3.023400000000004 0.8360012986207105 7543.175697006494
+3.0237000000000043 0.8405409437110604 7576.5998289638665
+3.0240000000000045 0.8468157791111038 7569.826177327641
+3.0243000000000047 0.8530906145111474 7563.052525691415
+3.024600000000005 0.8612655049206168 7524.104050843982
+3.024900000000005 0.8725259524237395 7432.905902432425
+3.025200000000005 0.8837863999268623 7341.707754020869
+3.0255000000000054 0.8941645341593091 7271.140384658579
+3.0258000000000056 0.8966837077657718 7384.335954855587
+3.026100000000006 0.8992028813722345 7497.531525052595
+3.026400000000006 0.9017220549786972 7610.727095249602
+3.026700000000006 0.8991249786944128 7659.099062318033
+3.0270000000000064 0.895466456026659 7694.022354952339
+3.0273000000000065 0.8918079333589052 7728.9456475866455
+3.0276000000000067 0.885304057938447 7783.492612443557
+3.027900000000007 0.8765898936215313 7853.283376080822
+3.028200000000007 0.8678757293046154 7923.074139718086
+3.0285000000000073 0.8638017253017733 7978.269612242325
+3.0288000000000075 0.8703120357712258 8000.172883528084
+3.0291000000000077 0.8768223462406783 8022.076154813843
+3.029400000000008 0.8828751606036285 8047.213908985878
+3.029700000000008 0.8809249749193353 8128.932618326219
+3.0300000000000082 0.8789747892350421 8210.651327666561
+3.0303000000000084 0.877024603550749 8292.370037006902
+3.0306000000000086 0.8721628644053834 8293.00490976733
+3.030900000000009 0.866621045855601 8274.700254874782
+3.031200000000009 0.8610792273058184 8256.395599982232
+3.031500000000009 0.8527486052499924 8287.526386236672
+3.0318000000000094 0.8423522538981435 8355.275112341606
+3.0321000000000096 0.8319559025462945 8423.02383844654
+3.0324000000000098 0.8224311546755706 8468.185861279193
+3.03270000000001 0.8145574060646243 8470.563944865515
+3.03300000000001 0.8066836574536781 8472.942028451836
+3.0333000000000103 0.7999969296518429 8481.277814176328
+3.0336000000000105 0.8017154969154712 8531.800092335565
+3.0339000000000107 0.8034340641790995 8582.322370494801
+3.034200000000011 0.8051526314427278 8632.844648654038
+3.034500000000011 0.8084288066546342 8628.147242942312
+3.0348000000000113 0.8118606675482601 8617.93053172288
+3.0351000000000115 0.8152925284418859 8607.713820503446
+3.0354000000000116 0.8129688752812599 8688.334639869938
+3.035700000000012 0.8081977561653505 8807.583071205652
+3.036000000000012 0.8034266370494411 8926.831502541369
+3.036300000000012 0.7993956928072481 8950.98591707701
+3.0366000000000124 0.7961012783983811 8880.514611622479
+3.0369000000000126 0.7928068639895142 8810.043306167949
+3.037200000000013 0.7886885528996789 8754.252390258163
+3.037500000000013 0.7827182031930087 8731.461544593953
+3.037800000000013 0.7767478534863385 8708.670698929742
+3.0381000000000133 0.7728830142068799 8705.792522093809
+3.0384000000000135 0.7842310394862867 8846.78859540409
+3.0387000000000137 0.7955790647656935 8987.784668714374
+3.039000000000014 0.8069270900451003 9128.780742024657
+3.039300000000014 0.8077999350332323 9119.514567470032
+3.0396000000000143 0.8080308798944134 9101.040593784663
+3.0399000000000145 0.8082618247555944 9082.566620099291
+3.0402000000000147 0.8086490360794267 9159.186077249715
+3.040500000000015 0.8090829480055527 9264.224431320552
+3.040800000000015 0.8095168599316787 9369.26278539139
+3.0411000000000152 0.8063044193605222 9420.679028208307
+3.0414000000000154 0.8007062923330927 9437.012117470933
+3.0417000000000156 0.7951081653056631 9453.34520673356
+3.042000000000016 0.7918276120599559 9454.755367603053
+3.042300000000016 0.7914259444908779 9437.628295637422
+3.042600000000016 0.7910242769218 9420.501223671792
+3.0429000000000164 0.7917390596752355 9391.26666313305
+3.0432000000000166 0.7951301896471132 9333.008112263935
+3.0435000000000167 0.798521319618991 9274.74956139482
+3.043800000000017 0.8021269134639073 9216.210591851468
+3.044100000000017 0.8069518481063274 9156.077293505627
+3.0444000000000173 0.8117767827487474 9095.943995159787
+3.0447000000000175 0.816572519267149 9036.576701029002
+3.0450000000000177 0.8188824627233978 9042.423458395282
+3.045300000000018 0.8211924061796467 9048.270215761562
+3.045600000000018 0.8235023496358956 9054.116973127844
+3.0459000000000183 0.8334244149018843 9103.620552835562
+3.0462000000000184 0.8443802746303245 9159.053120848099
+3.0465000000000186 0.8553361343587645 9214.485688860635
+3.046800000000019 0.8615684469854867 9356.78472984558
+3.047100000000019 0.8662762929459296 9527.118855399813
+3.047400000000019 0.8709841389063725 9697.452980954045
+3.0477000000000194 0.8733629378072061 9632.026204185911
+3.0480000000000196 0.8744220394912159 9433.01131233568
+3.0483000000000198 0.8754811411752257 9233.996420485451
+3.04860000000002 0.89080496967145 9230.501280011638
+3.04890000000002 0.9189153614071803 9402.265413581992
+3.0492000000000203 0.9470257531429106 9574.029547152348
+3.0495000000000205 0.9692000761337357 9684.352697148528
+3.0498000000000207 0.9832771916703347 9710.86610511321
+3.050100000000021 0.9973543072069336 9737.379513077889
+3.050400000000021 1.002723284838468 9780.53011853643
+3.0507000000000213 0.9900324963158668 9858.184529455439
+3.0510000000000215 0.9773417077932658 9935.83894037445
+3.0513000000000217 0.9763581162566023 9994.619935615056
+3.051600000000022 1.013643617860815 9991.706530107907
+3.051900000000022 1.0509291194650279 9988.79312460076
+3.0522000000000222 1.0781256829367594 9997.635312748434
+3.0525000000000224 1.0480510064749398 10073.209739306718
+3.0528000000000226 1.0179763300131202 10148.784165865003
+3.053100000000023 0.9905165081788088 10218.887944086166
+3.053400000000023 0.9968325159234341 10218.327875844498
+3.053700000000023 1.0031485236680595 10217.767807602828
+3.0540000000000234 1.0094554144674686 10217.250016350461
+3.0543000000000236 0.9961379191128873 10307.734193829205
+3.0546000000000237 0.9828204237583059 10398.21837130795
+3.054900000000024 0.9695029284037247 10488.702548786696
+3.055200000000024 0.9608939872679544 10432.28299852169
+3.0555000000000243 0.952609277000154 10365.747663040906
+3.0558000000000245 0.9443245667323534 10299.212327560123
+3.0561000000000247 0.953856198102722 10328.87255372749
+3.056400000000025 0.9658828052436806 10372.003872918593
+3.056700000000025 0.9779094123846394 10415.135192109696
+3.0570000000000253 1.0304419526910633 10451.175105756889
+3.0573000000000254 1.0915548734609526 10485.712845454924
+3.0576000000000256 1.152667794230842 10520.25058515296
+3.057900000000026 1.1439287158948568 10494.564685019719
+3.058200000000026 1.115448006799889 10451.858329126735
+3.058500000000026 1.0869672977049214 10409.151973233753
+3.0588000000000264 1.0830851900403906 10458.876249984745
+3.0591000000000266 1.087823259406383 10540.991328248885
+3.0594000000000268 1.0925613287723757 10623.106406513027
+3.059700000000027 1.0796376917840231 10770.854563760531
+3.060000000000027 1.0594199464458947 10945.708527198516
+3.0603000000000273 1.039202201107766 11120.562490636501
+3.0606000000000275 1.0387687184688625 11191.84428310572
+3.0609000000000277 1.0475910014070968 11214.671414950175
+3.061200000000028 1.0564132843453309 11237.49854679463
+3.061500000000028 1.065922023151975 11248.441128817525
+3.0618000000000283 1.0757825879360305 11253.292578766997
+3.0621000000000285 1.085643152720086 11258.144028716471
+3.0624000000000287 1.0825752296563014 11205.089985061453
+3.062700000000029 1.0724629699893307 11120.48501349248
+3.063000000000029 1.0623507103223602 11035.880041923509
+3.063300000000029 1.0501742563194019 11121.755757636252
+3.0636000000000294 1.0368352981512263 11303.642059948766
+3.0639000000000296 1.0234963399830508 11485.52836226128
+3.06420000000003 1.0341959598320773 11604.028529669136
+3.06450000000003 1.058512700080478 11686.622387226636
+3.06480000000003 1.0828294403288785 11769.216244784135
+3.0651000000000304 1.0922581586295563 11767.112372777985
+3.0654000000000305 1.0934296387717335 11718.033198952218
+3.0657000000000307 1.0946011189139104 11668.954025126453
+3.066000000000031 1.1021239056997958 11608.449531221402
+3.066300000000031 1.1130025384679716 11541.908229989083
+3.0666000000000313 1.1238811712361476 11475.366928756765
+3.0669000000000315 1.1253242008685613 11532.577024572374
+3.0672000000000317 1.122151273030843 11650.327096203375
+3.067500000000032 1.1189783451931246 11768.077167834377
+3.067800000000032 1.1224736152496355 11645.893397374364
+3.0681000000000322 1.128897439956959 11418.334924440229
+3.0684000000000324 1.1353212646642823 11190.776451506095
+3.0687000000000326 1.1443521855101055 11155.958980606623
+3.069000000000033 1.1543755425566828 11194.511703066748
+3.069300000000033 1.16439889960326 11233.064425526874
+3.069600000000033 1.180987863752937 11297.616441438115
+3.0699000000000334 1.199652235761561 11370.386911044221
+3.0702000000000336 1.218316607770185 11443.157380650327
+3.0705000000000338 1.2238929182588842 11482.575333594557
+3.070800000000034 1.2262259700636347 11513.728438522105
+3.071100000000034 1.228559021868385 11544.88154344965
+3.0714000000000343 1.2078563985077864 11464.619308090216
+3.0717000000000345 1.1830577523525863 11364.546072175857
+3.0720000000000347 1.158259106197386 11264.472836261497
+3.072300000000035 1.1342201491681732 11162.036297199455
+3.072600000000035 1.1102631109692291 11059.34491833149
+3.0729000000000353 1.0863060727702853 10956.653539463523
+3.0732000000000355 1.0946427418640683 10900.468009817907
+3.0735000000000356 1.104245261138656 10846.105418527215
+3.073800000000036 1.1145570834023282 10788.16136340904
+3.074100000000036 1.1496216114726203 10605.234160266718
+3.074400000000036 1.1846861395429125 10422.306957124396
+3.0747000000000364 1.215535029973429 10264.963631293786
+3.0750000000000366 1.2081760208733139 10339.496547554518
+3.075300000000037 1.2008170117731989 10414.029463815248
+3.075600000000037 1.2062102385852145 10462.11121251712
+3.075900000000037 1.2709811543392042 10387.029524604097
+3.0762000000000373 1.335752070093194 10311.947836691072
+3.0765000000000375 1.3931417064412637 10258.82144643038
+3.0768000000000377 1.4295349607754888 10268.147890073566
+3.077100000000038 1.4659282151097137 10277.474333716753
+3.077400000000038 1.520602562842655 10348.286750175508
+3.0777000000000383 1.6093341492391358 10533.64605969848
+3.0780000000000385 1.6980657356356166 10719.005369221451
+3.0783000000000387 1.7912010859852183 10790.879419385623
+3.078600000000039 1.8898442263552442 10720.817392681118
+3.078900000000039 1.9884873667252703 10650.75536597661
+3.0792000000000392 2.0871305070952966 0.0
diff --git a/py/picca/tests/delta_extraction/data/true_continuum_mean_cont_log.txt b/py/picca/tests/delta_extraction/data/true_continuum_mean_cont_log.txt
index 0dd9c901e..c63d59b84 100644
--- a/py/picca/tests/delta_extraction/data/true_continuum_mean_cont_log.txt
+++ b/py/picca/tests/delta_extraction/data/true_continuum_mean_cont_log.txt
@@ -1,209 +1,209 @@
 # log_lambda mean_cont mean_cont_weight
-3.0171 1.0804394562462456 0.0
-3.0174000000000003 1.0480827289605172 1508.3420441098458
-3.0177000000000005 1.0150821776710561 1505.7612482531445
-3.0180000000000007 0.9892725815251134 1499.5280301075932
-3.018300000000001 0.957679680766518 1518.9992548836465
-3.018600000000001 0.9331753754481301 1539.6739791524944
-3.0189000000000012 0.9128759174746323 1540.9308782464936
-3.0192000000000014 0.8897653802482143 1554.9134410354598
-3.0195000000000016 0.8733905292398543 1556.6311367904245
-3.019800000000002 0.879722520804291 1572.6772415028286
-3.020100000000002 0.8783845793372163 1573.4486394756077
-3.020400000000002 0.8717020790043123 1571.5782021864584
-3.0207000000000024 0.8725249331457424 1589.6994191557076
-3.0210000000000026 0.8694257347989008 1593.0989438589324
-3.0213000000000028 0.858906310698114 1642.3944910899374
-3.021600000000003 0.8534269529532363 1662.1520093703186
-3.021900000000003 0.849208913070888 1657.4905994649553
-3.0222000000000033 0.850003792296633 1650.6892423131862
-3.0225000000000035 0.8458469001274418 1667.801262014348
-3.0228000000000037 0.8449639830547968 1687.7456067391452
-3.023100000000004 0.844740104040607 1686.8564383765033
-3.023400000000004 0.849018266224172 1690.147767398624
-3.0237000000000043 0.8503537562535614 1680.2807738032764
-3.0240000000000045 0.8498822381419084 1679.4507413098409
-3.0243000000000047 0.8514765807151532 1693.3874526454333
-3.024600000000005 0.853119248477182 1691.977675753777
-3.024900000000005 0.8571337222581632 1729.9074947267393
-3.025200000000005 0.864204642750331 1737.502599738301
-3.0255000000000054 0.8633333875068412 1739.7477175762597
-3.0258000000000056 0.8635004733011592 1725.8526463817743
-3.026100000000006 0.8887408464911666 1747.4927212516309
-3.026400000000006 0.8959026699078237 1745.5309268030946
-3.026700000000006 0.894086450235502 1760.452042153075
-3.0270000000000064 0.8931282472299192 1762.2737102730405
-3.0273000000000065 0.889533052641887 1774.9986164505676
-3.0276000000000067 0.8803813197637661 1800.5103444263452
-3.027900000000007 0.8760497688778187 1820.2677682419217
-3.028200000000007 0.8720227940675009 1821.7704750357639
-3.0285000000000073 0.8732289246208368 1819.0936499662769
-3.0288000000000075 0.8709106345915255 1827.243150620194
-3.0291000000000077 0.8738900748483185 1834.0732667255784
-3.029400000000008 0.8802352495548115 1850.3545175447025
-3.029700000000008 0.8852150985183557 1871.112753742813
-3.0300000000000082 0.8863496204205144 1888.5752020984671
-3.0303000000000084 0.8854581268978797 1892.759999339716
-3.0306000000000086 0.8845233704934501 1888.8515077729994
-3.030900000000009 0.8828568436202959 1879.9503242305955
-3.031200000000009 0.8780171600421458 1875.9953542237563
-3.031500000000009 0.8697723778587152 1872.7446301795171
-3.0318000000000094 0.8627497336282844 1864.2157227963853
-3.0321000000000096 0.8529764511123611 1861.2511546235362
-3.0324000000000098 0.8438761412244186 1856.2167415291535
-3.03270000000001 0.8302042859058308 1867.6499890296775
-3.03300000000001 0.820291252425661 1872.5278828195926
-3.0333000000000103 0.8220738585653512 1880.7826686633534
-3.0336000000000105 0.8146260431514307 1903.8762301620584
-3.0339000000000107 0.8067588618629123 1928.5367732131824
-3.034200000000011 0.804076964179783 1925.0415914962985
-3.034500000000011 0.8002981979897422 1918.234530076079
-3.0348000000000113 0.7992220450770843 1915.3425360369417
-3.0351000000000115 0.7932028057887816 1915.9265648330795
-3.0354000000000116 0.8115371710254269 1925.2359841407917
-3.035700000000012 0.8145035939537325 1945.7605954233347
-3.036000000000012 0.8041347588434425 1967.4631360497574
-3.036300000000012 0.8098434403151702 2005.9834438492355
-3.0366000000000124 0.8006799189197856 2033.9005401229235
-3.0369000000000126 0.7850278514850947 2055.3435297355263
-3.037200000000013 0.7792550822991207 2050.782580670822
-3.037500000000013 0.7810413293996308 2069.2668634438014
-3.037800000000013 0.7741061972006836 2068.7488408999334
-3.0381000000000133 0.8011908871106338 2079.2921585323875
-3.0384000000000135 0.8070660378731285 2082.5086718104144
-3.0387000000000137 0.8011192557809781 2083.4117466255775
-3.039000000000014 0.7939668586775072 2093.7829027642406
-3.039300000000014 0.8061581362521328 2111.364364700389
-3.0396000000000143 0.8064828011899389 2116.9445819917055
-3.0399000000000145 0.8060229883113337 2107.049571538027
-3.0402000000000147 0.8173794858400325 2122.3409604507406
-3.040500000000015 0.8190917291788954 2122.9153745408057
-3.040800000000015 0.8191229833009519 2117.3189484795357
-3.0411000000000152 0.8093719285698165 2150.0110140907873
-3.0414000000000154 0.8019240579319938 2158.8658835822557
-3.0417000000000156 0.802461742307554 2152.704269017342
-3.042000000000016 0.800627507926538 2145.848255127793
-3.042300000000016 0.8007491564100373 2141.7545866985156
-3.042600000000016 0.7948363824087162 2152.6127569557852
-3.0429000000000164 0.7930608832209293 2155.059645952738
-3.0432000000000166 0.7937577254820389 2152.5351155688227
-3.0435000000000167 0.7940964834340623 2144.637326510036
-3.043800000000017 0.7905993355518988 2159.7103998425273
-3.044100000000017 0.7918373378530562 2162.6771647738124
-3.0444000000000173 0.7950081783662128 2152.224421464678
-3.0447000000000175 0.7931111096071762 2151.979497263266
-3.0450000000000177 0.7970270617758882 2140.905187408963
-3.045300000000018 0.8003137357544313 2137.286273601565
-3.045600000000018 0.8026242398112099 2131.0033667610196
-3.0459000000000183 0.8066685045044723 2126.3020516553847
-3.0462000000000184 0.8121841422887449 2119.8112961320217
-3.0465000000000186 0.8344046023918973 2151.9709095326502
-3.046800000000019 0.8469310439491448 2184.1888447144215
-3.047100000000019 0.8528343317639763 2197.614008520845
-3.047400000000019 0.8515368856112935 2224.3151803553346
-3.0477000000000194 0.8517862744666782 2242.2144654889585
-3.0480000000000196 0.8517593111053577 2243.4610705696646
-3.0483000000000198 0.8542819587163617 2244.9595034166405
-3.04860000000002 0.8533522014697366 2226.673134459416
-3.04890000000002 0.8556573380661638 2223.770330237866
-3.0492000000000203 0.8566157826294823 2220.8840818431513
-3.0495000000000205 1.0045142600403123 2291.146611430213
-3.0498000000000207 1.0546890990376152 2310.286471193023
-3.050100000000021 1.0594468086345195 2314.6690008173327
-3.050400000000021 1.0566920591140239 2302.018264056776
-3.0507000000000213 1.0589664124315352 2316.4386052772993
-3.0510000000000215 1.0535588284727422 2315.2775547547353
-3.0513000000000217 1.053746989132208 2346.3851574781497
-3.051600000000022 1.0491017024703635 2351.9657588545947
-3.051900000000022 1.043213155273301 2349.493695030282
-3.0522000000000222 1.073493336627764 2381.801038887302
-3.0525000000000224 1.081060124313739 2430.047387153384
-3.0528000000000226 1.0686673237158013 2433.894372629288
-3.053100000000023 1.053827930628489 2450.0655502772147
-3.053400000000023 1.035462666243755 2443.4304232699606
-3.053700000000023 1.0229917602435183 2458.3040996353834
-3.0540000000000234 1.0044714146418576 2455.0777426008353
-3.0543000000000236 0.9951352254174389 2450.0722067266684
-3.0546000000000237 0.9795214730109503 2438.346305558377
-3.054900000000024 0.9730883011438449 2435.9590659237706
-3.055200000000024 0.9740460490282742 2449.353397140912
-3.0555000000000243 0.9597437384429617 2467.6819600721
-3.0558000000000245 0.9656195015581459 2484.126305025065
-3.0561000000000247 0.9609256407945613 2484.343352778503
-3.056400000000025 0.9628642730392821 2479.6270477711255
-3.056700000000025 0.9596248263249559 2475.1511102912273
-3.0570000000000253 1.052180587388016 2482.9329823044977
-3.0573000000000254 1.099447590811494 2506.094734877779
-3.0576000000000256 1.10588964691659 2506.3453673835243
-3.057900000000026 1.09696804045512 2498.7859632920504
-3.058200000000026 1.0991144499694256 2494.279451047212
-3.058500000000026 1.0901034733152057 2525.512355449535
-3.0588000000000264 1.0850157147648785 2531.1390299855893
-3.0591000000000266 1.078018543319029 2545.966392758569
-3.0594000000000268 1.0834510105469335 2585.6369744351964
-3.059700000000027 1.081996515700013 2607.317859622981
-3.060000000000027 1.0831038451429456 2647.922669033132
-3.0603000000000273 1.083791364330191 2660.0374621323213
-3.0606000000000275 1.0880605831491195 2645.1979332656983
-3.0609000000000277 1.0786274457499747 2661.608924196918
-3.061200000000028 1.0706923626744242 2675.8527383852274
-3.061500000000028 1.0660367462856517 2677.4028595209243
-3.0618000000000283 1.0650147539201695 2707.6462019662245
-3.0621000000000285 1.0604504101570287 2715.9498013076227
-3.0624000000000287 1.0556485897559966 2745.0323646701067
-3.062700000000029 1.04579957152227 2772.4821472840085
-3.063000000000029 1.0457429968911383 2768.1757619701884
-3.063300000000029 1.0521880844998506 2764.147648879601
-3.0636000000000294 1.0545516341947725 2760.8129113894006
-3.0639000000000296 1.060103660622766 2768.9519879103614
-3.06420000000003 1.0667472649016316 2766.920855191139
-3.06450000000003 1.0532663417463752 2816.995293944583
-3.06480000000003 1.0572647129268933 2851.8800385576787
-3.0651000000000304 1.0656770225105041 2849.7407270118774
-3.0654000000000305 1.0682292015302304 2845.3639885034395
-3.0657000000000307 1.0821734453365248 2836.991243372538
-3.066000000000031 1.0946457152352573 2824.414541093909
-3.066300000000031 1.1059736526488109 2822.3677246411235
-3.0666000000000313 1.1179270360725673 2816.6049957466867
-3.0669000000000315 1.1320294206908572 2803.1079348552225
-3.0672000000000317 1.1463849005754136 2804.619220256673
-3.067500000000032 1.1544038633728337 2796.480727583612
-3.067800000000032 1.1706251441355155 2780.8087830671475
-3.0681000000000322 1.1845983120879682 2784.6684806630383
-3.0684000000000324 1.1973411552943483 2770.091339315079
-3.0687000000000326 1.202542717194546 2760.9474699868474
-3.069000000000033 1.21300762747095 2757.396288206761
-3.069300000000033 1.2217990520722122 2753.6972785669627
-3.069600000000033 1.2268498064952529 2742.696652235211
-3.0699000000000334 1.2271706701003426 2741.9672842458185
-3.0702000000000336 1.2264138905233573 2732.513705517981
-3.0705000000000338 1.2256248238757572 2717.1761912114553
-3.070800000000034 1.2224708143310479 2721.8117688491852
-3.071100000000034 1.2173618804876336 2708.362798228546
-3.0714000000000343 1.2129563963314618 2699.203479050055
-3.0717000000000345 1.2028547113412231 2692.8285919846685
-3.0720000000000347 1.1933730380668797 2687.486638210864
-3.072300000000035 1.1892048980354737 2675.9772245468826
-3.072600000000035 1.1825195796424628 2669.3638686092813
-3.0729000000000353 1.185047311690644 2667.0277211782623
-3.0732000000000355 1.178836345159242 2655.9658913696812
-3.0735000000000356 1.178182451308966 2652.576548977462
-3.073800000000036 1.1835241472556224 2642.1491463985312
-3.074100000000036 1.1902369286245076 2632.4623571952893
-3.074400000000036 1.1986527320916174 2627.7688913257653
-3.0747000000000364 1.2160731171619474 2621.8117781625388
-3.0750000000000366 1.2432488118993037 2612.8887745406946
-3.075300000000037 1.266466294992914 2609.1880682894716
-3.075600000000037 1.2974580311389223 2600.62022770759
-3.075900000000037 1.3324901112113414 2598.5019591657237
-3.0762000000000373 1.378073455498382 2585.7053791923136
-3.0765000000000375 1.4326097585117978 2587.9017905402757
-3.0768000000000377 1.486044061254829 2577.270511825302
-3.077100000000038 1.5465573610512238 2568.1365459692274
-3.077400000000038 1.6181399366135356 2559.438408831522
-3.0777000000000383 1.7055467477645694 2559.8031368131183
-3.0780000000000385 1.7792276201705088 2552.455291575173
-3.0783000000000387 1.8666677828617249 2541.0075061161706
-3.078600000000039 1.9714971918908404 2542.6921794025075
-3.078900000000039 2.065195208128754 2531.764956868337
-3.0792000000000392 2.1532298232214253 0.0
+3.0171 1.0280894112229924 0.0
+3.0174000000000003 1.0425743174435782 2005.1597077880942
+3.0177000000000005 1.0212251004615176 1980.5835759184024
+3.0180000000000007 0.9922307945660748 1965.0650850846196
+3.018300000000001 0.9521111577542334 1960.8806258750124
+3.018600000000001 0.9047537509722773 1962.5491485446705
+3.0189000000000012 0.8924093504082167 1982.7902408342295
+3.0192000000000014 0.8909012632819336 2039.1790665630308
+3.0195000000000016 0.9111486398150658 1982.7155540200351
+3.019800000000002 0.8786958714524724 1966.2459085705962
+3.020100000000002 0.8412220231810464 1860.3853096894543
+3.020400000000002 0.8418906368319159 1865.8801621247455
+3.0207000000000024 0.8620072239753346 1964.3444662136042
+3.0210000000000026 0.8766161957647223 1945.2022254384763
+3.0213000000000028 0.8480061642699432 2020.5567129864633
+3.021600000000003 0.8479568502009307 1994.248344407635
+3.021900000000003 0.8548397184319503 1991.070411450949
+3.0222000000000033 0.8202330836964832 2036.0029261241812
+3.0225000000000035 0.8371490765653404 2047.3044303247277
+3.0228000000000037 0.8552171345670381 2043.768416627532
+3.023100000000004 0.8357338904016409 2116.0996212250957
+3.023400000000004 0.8332485467577884 2122.9595435896
+3.0237000000000043 0.8230568085829463 2117.2866880039246
+3.0240000000000045 0.8506014872486228 2078.2142967213913
+3.0243000000000047 0.8728705130268198 2141.849142987408
+3.024600000000005 0.861903688736716 2069.795810004882
+3.024900000000005 0.8680502906492396 2055.388299326345
+3.025200000000005 0.8667444313481236 2079.063626158846
+3.0255000000000054 0.8971741601837973 2088.513890967987
+3.0258000000000056 0.9134640952490465 2127.408114643762
+3.026100000000006 0.9068914802312867 2041.221708513911
+3.026400000000006 0.899455913776142 2141.805326750093
+3.026700000000006 0.9256682529861723 2133.494913861776
+3.0270000000000064 0.9049151391835583 2152.9423457308053
+3.0273000000000065 0.9092931948601974 2241.3512026823046
+3.0276000000000067 0.9026401834728258 2241.0251917633077
+3.027900000000007 0.8709360751304627 2255.4427859210455
+3.028200000000007 0.8512152521800477 2205.3520823294916
+3.0285000000000073 0.8543329913505584 2254.8594764626077
+3.0288000000000075 0.8796762250761814 2242.6394704687514
+3.0291000000000077 0.896330914845877 2318.12322335855
+3.029400000000008 0.8671035631216388 2305.676120449563
+3.029700000000008 0.8580723133874302 2306.5596074660366
+3.0300000000000082 0.8663458717428634 2349.940154726229
+3.0303000000000084 0.8632780159325559 2384.4909388105348
+3.0306000000000086 0.8818893017668819 2325.7160909924137
+3.030900000000009 0.8849532414413973 2351.8905265727954
+3.031200000000009 0.8854587691049166 2315.68140332639
+3.031500000000009 0.8734461187915372 2331.1668064132455
+3.0318000000000094 0.844137588817052 2397.3801282866075
+3.0321000000000096 0.8354143345868049 2414.5119151129647
+3.0324000000000098 0.8228516592578775 2359.8519612853825
+3.03270000000001 0.8069667263422123 2420.51256741613
+3.03300000000001 0.7916674988444538 2460.1659468600274
+3.0333000000000103 0.8038509304750414 2426.600473908314
+3.0336000000000105 0.8140646728608681 2447.9206892137554
+3.0339000000000107 0.8050994978639214 2452.9931537805733
+3.034200000000011 0.8055026804174293 2483.193085559562
+3.034500000000011 0.7996502231344966 2479.4884609538394
+3.0348000000000113 0.7999865757244934 2476.7093122874458
+3.0351000000000115 0.8080743723005503 2471.2933223815035
+3.0354000000000116 0.8326582390819707 2444.16319545582
+3.035700000000012 0.8140727803703965 2506.7720639290246
+3.036000000000012 0.8178705688530075 2541.5766867428947
+3.036300000000012 0.8284907918713799 2626.6794051722854
+3.0366000000000124 0.8231862087774888 2595.7998585508076
+3.0369000000000126 0.7967214321461218 2521.6165268840973
+3.037200000000013 0.7680935448276381 2528.009967465435
+3.037500000000013 0.7780718692201752 2557.288267854299
+3.037800000000013 0.7553858089110735 2575.746399547026
+3.0381000000000133 0.8059170785555284 2558.3416497988774
+3.0384000000000135 0.8099446556974069 2550.6697129210597
+3.0387000000000137 0.8087934120953292 2619.9064446085526
+3.039000000000014 0.8003063355489717 2614.3413500954853
+3.039300000000014 0.796854148464948 2627.041872260723
+3.0396000000000143 0.8232862878620506 2588.6984272841096
+3.0399000000000145 0.7984341735402617 2604.9659110357056
+3.0402000000000147 0.8087912850191197 2639.0356951470467
+3.040500000000015 0.8457686352214198 2690.6126628856987
+3.040800000000015 0.8181627785861271 2738.6825965869307
+3.0411000000000152 0.8059338729551337 2808.275087323748
+3.0414000000000154 0.8175093552362568 2831.165231756181
+3.0417000000000156 0.7855579425767345 2791.816756614121
+3.042000000000016 0.7696760289558086 2725.4072642923293
+3.042300000000016 0.7935589542136892 2723.367096429308
+3.042600000000016 0.8038943809808394 2790.3355446348282
+3.0429000000000164 0.7990633184168908 2690.2050136643193
+3.0432000000000166 0.8249832337639044 2648.8674077251117
+3.0435000000000167 0.8107514918719676 2698.3297779623927
+3.043800000000017 0.8023897991018134 2691.2345267263295
+3.044100000000017 0.817996867182766 2742.661755194151
+3.0444000000000173 0.8154581505515305 2675.2017978505464
+3.0447000000000175 0.8152538690658624 2656.375176228997
+3.0450000000000177 0.8214129246373143 2615.54745409002
+3.045300000000018 0.8409874610293465 2658.2043255445246
+3.045600000000018 0.8207392283366075 2687.125264508373
+3.0459000000000183 0.8470428205741339 2633.792724505258
+3.0462000000000184 0.8523532384470079 2652.6299722415783
+3.0465000000000186 0.8627482954078044 2696.124966651789
+3.046800000000019 0.8771614249848135 2697.76493981587
+3.047100000000019 0.8901935411719484 2785.790676061741
+3.047400000000019 0.8809424561962756 2754.1094860761455
+3.0477000000000194 0.855839655081109 2749.4399601322707
+3.0480000000000196 0.877765099753925 2777.304409215992
+3.0483000000000198 0.8898440785979677 2771.472043075983
+3.04860000000002 0.8615641653231202 2752.9956675947283
+3.04890000000002 0.8623277517723398 2819.5822482793315
+3.0492000000000203 0.881958879830276 2777.7902464551025
+3.0495000000000205 1.0283683292601777 2832.1980541111625
+3.0498000000000207 1.0451184274894794 2961.1860480488863
+3.050100000000021 1.0345618270571582 2930.595109358464
+3.050400000000021 1.0134906197221123 2919.2846006422837
+3.0507000000000213 0.9966965680962799 2925.1854917899127
+3.0510000000000215 1.0276632295713164 2896.000256834634
+3.0513000000000217 1.0064262555228296 2847.2046248691186
+3.051600000000022 1.0292904996887997 2926.697169128632
+3.051900000000022 1.0909850211850363 2967.0660050429096
+3.0522000000000222 1.1045671260410845 2985.7256353886764
+3.0525000000000224 1.1111524902193346 3064.5561148557113
+3.0528000000000226 1.0439473767206557 3064.8895104786047
+3.053100000000023 1.0005338773801304 3087.0015836621014
+3.053400000000023 0.9859499402441281 2997.527121790252
+3.053700000000023 0.9707261974730339 3009.3895857395846
+3.0540000000000234 0.9772025663900136 3074.612001579881
+3.0543000000000236 1.0017034330125385 3189.7381468425283
+3.0546000000000237 1.086277491300028 3111.8980929558807
+3.054900000000024 1.008782859392107 3110.214298754942
+3.055200000000024 0.946793939750892 3103.890088120178
+3.0555000000000243 0.9732167502178716 3176.486999268699
+3.0558000000000245 0.9534689087850308 3103.616170244574
+3.0561000000000247 0.9404720207633412 3058.8090692467986
+3.056400000000025 0.9743657351398103 3110.5216638611455
+3.056700000000025 0.9870388470369909 3043.8556018342565
+3.0570000000000253 1.0610103754813405 3032.211664744079
+3.0573000000000254 1.205646769618851 3139.0717478342963
+3.0576000000000256 1.1828972611912472 3208.688447423319
+3.057900000000026 1.1414346398470223 3105.4197742554898
+3.058200000000026 1.1234475646937452 3099.242436033189
+3.058500000000026 1.1019920347288885 3166.2282997848356
+3.0588000000000264 1.0913273017324374 3180.209713651343
+3.0591000000000266 1.0719788157475034 3212.545367353224
+3.0594000000000268 1.1059225892072304 3229.9009332830033
+3.059700000000027 1.096646032818442 3244.0281388217454
+3.060000000000027 1.1126744500019423 3312.1828367260787
+3.0603000000000273 1.085757033904259 3373.8308856043946
+3.0606000000000275 1.047829707539071 3395.434915765929
+3.0609000000000277 1.0377784470766491 3376.0834324977645
+3.061200000000028 1.079258230682509 3352.0935207026096
+3.061500000000028 1.0892238955414328 3405.3874843004787
+3.0618000000000283 1.073240256600951 3362.3693210678334
+3.0621000000000285 1.1140125695277305 3410.5287203369467
+3.0624000000000287 1.1350238157684929 3400.8700681007103
+3.062700000000029 1.0656285522987896 3362.4594982429326
+3.063000000000029 1.109995508168235 3410.280836818639
+3.063300000000029 1.0846123329764583 3390.447501372352
+3.0636000000000294 1.0382992109003768 3440.3358390970902
+3.0639000000000296 1.096895877240009 3490.527571750575
+3.06420000000003 1.0908716045039244 3519.3680029852317
+3.06450000000003 1.1009187395236113 3580.782297596679
+3.06480000000003 1.102303935963778 3611.8198334090703
+3.0651000000000304 1.0765353427435236 3620.1067960432856
+3.0654000000000305 1.0666879053212484 3607.927930613512
+3.0657000000000307 1.1157112426693516 3547.1602507498687
+3.066000000000031 1.1751387656010879 3511.0886267273163
+3.066300000000031 1.135125833939788 3531.397332377168
+3.0666000000000313 1.1197555827936796 3416.409224449786
+3.0669000000000315 1.1236632451092567 3505.2707486043587
+3.0672000000000317 1.1408248607693845 3592.8837734574477
+3.067500000000032 1.1310671144445523 3590.067041974187
+3.067800000000032 1.1401197450860803 3582.240037808315
+3.0681000000000322 1.1727389084091517 3468.5013562526447
+3.0684000000000324 1.19309776579232 3444.3167254541327
+3.0687000000000326 1.2042972503918448 3489.894329579187
+3.069000000000033 1.214122995068554 3516.3567403167144
+3.069300000000033 1.2038651580516653 3450.6551985928786
+3.069600000000033 1.192878963885623 3513.1870950940424
+3.0699000000000334 1.221183565531823 3501.04067522763
+3.0702000000000336 1.2470033572999382 3484.98454078151
+3.0705000000000338 1.2546655682018293 3482.028426535232
+3.070800000000034 1.2747849761390138 3401.0640510021412
+3.071100000000034 1.1984111767839403 3461.5104640389704
+3.0714000000000343 1.1527436004175462 3469.8686171026598
+3.0717000000000345 1.2086069412164477 3472.972635514487
+3.0720000000000347 1.216849576337803 3398.426591828706
+3.072300000000035 1.1706336857523325 3440.6381941167347
+3.072600000000035 1.105049366247719 3372.6713168812785
+3.0729000000000353 1.0809353317978678 3362.7930661581267
+3.0732000000000355 1.134927705094169 3384.1002977356316
+3.0735000000000356 1.1755158011501834 3323.9468424993165
+3.073800000000036 1.1825086724574454 3307.9159505703783
+3.074100000000036 1.1401665246695225 3253.270246670219
+3.074400000000036 1.1558331924584342 3177.3845081920535
+3.0747000000000364 1.185048110297015 3124.6828619668768
+3.0750000000000366 1.2410639858693717 3158.573974799126
+3.075300000000037 1.2435394355419205 3154.409230298069
+3.075600000000037 1.2555741107530094 3131.77481038943
+3.075900000000037 1.3086742537750131 3129.4935755301535
+3.0762000000000373 1.329203448237353 3203.882352306157
+3.0765000000000375 1.3428150670757961 3213.6590519741458
+3.0768000000000377 1.4949346665046561 3199.5016211362013
+3.077100000000038 1.533493695211551 3152.908425270851
+3.077400000000038 1.519347985712259 3206.8438340155276
+3.0777000000000383 1.622197119810127 3247.8390158186353
+3.0780000000000385 1.6930281419198907 3330.7708996437027
+3.0783000000000387 1.8601496367944033 3313.3846508493107
+3.078600000000039 1.9696952882765524 3189.424399541502
+3.078900000000039 1.9705696500309635 3225.242803405335
+3.0792000000000392 1.9452929376947274 0.0
diff --git a/py/picca/tests/delta_extraction/data/true_iter_out_prefix_compute_expected_flux_lin.fits.gz b/py/picca/tests/delta_extraction/data/true_iter_out_prefix_compute_expected_flux_lin.fits.gz
index 89de360c3..e83d71fa9 100644
Binary files a/py/picca/tests/delta_extraction/data/true_iter_out_prefix_compute_expected_flux_lin.fits.gz and b/py/picca/tests/delta_extraction/data/true_iter_out_prefix_compute_expected_flux_lin.fits.gz differ
diff --git a/py/picca/tests/delta_extraction/data/true_iter_out_prefix_compute_expected_flux_log.fits.gz b/py/picca/tests/delta_extraction/data/true_iter_out_prefix_compute_expected_flux_log.fits.gz
index 4d7d5d8ee..7215948f1 100644
Binary files a/py/picca/tests/delta_extraction/data/true_iter_out_prefix_compute_expected_flux_log.fits.gz and b/py/picca/tests/delta_extraction/data/true_iter_out_prefix_compute_expected_flux_log.fits.gz differ
diff --git a/py/picca/tests/delta_extraction/data/true_mean_cont_lin.txt b/py/picca/tests/delta_extraction/data/true_mean_cont_lin.txt
new file mode 100644
index 000000000..60e8a5094
--- /dev/null
+++ b/py/picca/tests/delta_extraction/data/true_mean_cont_lin.txt
@@ -0,0 +1,209 @@
+# log_lambda mean_cont mean_cont_weight
+3.0171 1.0580841904047682 0.0
+3.0174000000000003 1.0329516733687665 0.0
+3.0177000000000005 1.0078191563327648 7107.038020333474
+3.0180000000000007 0.9826866392967631 7091.803260296574
+3.018300000000001 0.9575541222607615 7076.568500259674
+3.018600000000001 0.9337887244283367 7069.9130638916495
+3.0189000000000012 0.914877023784194 7093.716887447732
+3.0192000000000014 0.8959653231400513 7117.520711003814
+3.0195000000000016 0.8770536224959086 7141.324534559896
+3.019800000000002 0.8662708304762088 7020.97127391672
+3.020100000000002 0.8564479557530174 6883.594955821406
+3.020400000000002 0.8466250810298258 6746.218637726091
+3.0207000000000024 0.8432406525080902 6768.021686608148
+3.0210000000000026 0.8445835056163568 6906.698539175534
+3.0213000000000028 0.8459263587246234 7045.375391742921
+3.021600000000003 0.8457832495235215 7151.660380685157
+3.021900000000003 0.8415492745601237 7168.770317847379
+3.0222000000000033 0.837315299596726 7185.880255009602
+3.0225000000000035 0.8330813246333284 7202.990192171825
+3.0228000000000037 0.8339275582793554 7314.035392372673
+3.023100000000004 0.8349644284500329 7428.605544689584
+3.023400000000004 0.8360012986207105 7543.175697006494
+3.0237000000000043 0.8405409437110604 7576.5998289638665
+3.0240000000000045 0.8468157791111038 7569.826177327641
+3.0243000000000047 0.8530906145111474 7563.052525691415
+3.024600000000005 0.8612655049206168 7524.104050843982
+3.024900000000005 0.8725259524237395 7432.905902432425
+3.025200000000005 0.8837863999268623 7341.707754020869
+3.0255000000000054 0.8941645341593091 7271.140384658579
+3.0258000000000056 0.8966837077657718 7384.335954855587
+3.026100000000006 0.8992028813722345 7497.531525052595
+3.026400000000006 0.9017220549786972 7610.727095249602
+3.026700000000006 0.8991249786944128 7659.099062318033
+3.0270000000000064 0.895466456026659 7694.022354952339
+3.0273000000000065 0.8918079333589052 7728.9456475866455
+3.0276000000000067 0.885304057938447 7783.492612443557
+3.027900000000007 0.8765898936215313 7853.283376080822
+3.028200000000007 0.8678757293046154 7923.074139718086
+3.0285000000000073 0.8638017253017733 7978.269612242325
+3.0288000000000075 0.8703120357712258 8000.172883528084
+3.0291000000000077 0.8768223462406783 8022.076154813843
+3.029400000000008 0.8828751606036285 8047.213908985878
+3.029700000000008 0.8809249749193353 8128.932618326219
+3.0300000000000082 0.8789747892350421 8210.651327666561
+3.0303000000000084 0.877024603550749 8292.370037006902
+3.0306000000000086 0.8721628644053834 8293.00490976733
+3.030900000000009 0.866621045855601 8274.700254874782
+3.031200000000009 0.8610792273058184 8256.395599982232
+3.031500000000009 0.8527486052499924 8287.526386236672
+3.0318000000000094 0.8423522538981435 8355.275112341606
+3.0321000000000096 0.8319559025462945 8423.02383844654
+3.0324000000000098 0.8224311546755706 8468.185861279193
+3.03270000000001 0.8145574060646243 8470.563944865515
+3.03300000000001 0.8066836574536781 8472.942028451836
+3.0333000000000103 0.7999969296518429 8481.277814176328
+3.0336000000000105 0.8017154969154712 8531.800092335565
+3.0339000000000107 0.8034340641790995 8582.322370494801
+3.034200000000011 0.8051526314427278 8632.844648654038
+3.034500000000011 0.8084288066546342 8628.147242942312
+3.0348000000000113 0.8118606675482601 8617.93053172288
+3.0351000000000115 0.8152925284418859 8607.713820503446
+3.0354000000000116 0.8129688752812599 8688.334639869938
+3.035700000000012 0.8081977561653505 8807.583071205652
+3.036000000000012 0.8034266370494411 8926.831502541369
+3.036300000000012 0.7993956928072481 8950.98591707701
+3.0366000000000124 0.7961012783983811 8880.514611622479
+3.0369000000000126 0.7928068639895142 8810.043306167949
+3.037200000000013 0.7886885528996789 8754.252390258163
+3.037500000000013 0.7827182031930087 8731.461544593953
+3.037800000000013 0.7767478534863385 8708.670698929742
+3.0381000000000133 0.7728830142068799 8705.792522093809
+3.0384000000000135 0.7842310394862867 8846.78859540409
+3.0387000000000137 0.7955790647656935 8987.784668714374
+3.039000000000014 0.8069270900451003 9128.780742024657
+3.039300000000014 0.8077999350332323 9119.514567470032
+3.0396000000000143 0.8080308798944134 9101.040593784663
+3.0399000000000145 0.8082618247555944 9082.566620099291
+3.0402000000000147 0.8086490360794267 9159.186077249715
+3.040500000000015 0.8090829480055527 9264.224431320552
+3.040800000000015 0.8095168599316787 9369.26278539139
+3.0411000000000152 0.8063044193605222 9420.679028208307
+3.0414000000000154 0.8007062923330927 9437.012117470933
+3.0417000000000156 0.7951081653056631 9453.34520673356
+3.042000000000016 0.7918276120599559 9454.755367603053
+3.042300000000016 0.7914259444908779 9437.628295637422
+3.042600000000016 0.7910242769218 9420.501223671792
+3.0429000000000164 0.7917390596752355 9391.26666313305
+3.0432000000000166 0.7951301896471132 9333.008112263935
+3.0435000000000167 0.798521319618991 9274.74956139482
+3.043800000000017 0.8021269134639073 9216.210591851468
+3.044100000000017 0.8069518481063274 9156.077293505627
+3.0444000000000173 0.8117767827487474 9095.943995159787
+3.0447000000000175 0.816572519267149 9036.576701029002
+3.0450000000000177 0.8188824627233978 9042.423458395282
+3.045300000000018 0.8211924061796467 9048.270215761562
+3.045600000000018 0.8235023496358956 9054.116973127844
+3.0459000000000183 0.8334244149018843 9103.620552835562
+3.0462000000000184 0.8443802746303245 9159.053120848099
+3.0465000000000186 0.8553361343587645 9214.485688860635
+3.046800000000019 0.8615684469854867 9356.78472984558
+3.047100000000019 0.8662762929459296 9527.118855399813
+3.047400000000019 0.8709841389063725 9697.452980954045
+3.0477000000000194 0.8733629378072061 9632.026204185911
+3.0480000000000196 0.8744220394912159 9433.01131233568
+3.0483000000000198 0.8754811411752257 9233.996420485451
+3.04860000000002 0.89080496967145 9230.501280011638
+3.04890000000002 0.9189153614071803 9402.265413581992
+3.0492000000000203 0.9470257531429106 9574.029547152348
+3.0495000000000205 0.9692000761337357 9684.352697148528
+3.0498000000000207 0.9832771916703347 9710.86610511321
+3.050100000000021 0.9973543072069336 9737.379513077889
+3.050400000000021 1.002723284838468 9780.53011853643
+3.0507000000000213 0.9900324963158668 9858.184529455439
+3.0510000000000215 0.9773417077932658 9935.83894037445
+3.0513000000000217 0.9763581162566023 9994.619935615056
+3.051600000000022 1.013643617860815 9991.706530107907
+3.051900000000022 1.0509291194650279 9988.79312460076
+3.0522000000000222 1.0781256829367594 9997.635312748434
+3.0525000000000224 1.0480510064749398 10073.209739306718
+3.0528000000000226 1.0179763300131202 10148.784165865003
+3.053100000000023 0.9905165081788088 10218.887944086166
+3.053400000000023 0.9968325159234341 10218.327875844498
+3.053700000000023 1.0031485236680595 10217.767807602828
+3.0540000000000234 1.0094554144674686 10217.250016350461
+3.0543000000000236 0.9961379191128873 10307.734193829205
+3.0546000000000237 0.9828204237583059 10398.21837130795
+3.054900000000024 0.9695029284037247 10488.702548786696
+3.055200000000024 0.9608939872679544 10432.28299852169
+3.0555000000000243 0.952609277000154 10365.747663040906
+3.0558000000000245 0.9443245667323534 10299.212327560123
+3.0561000000000247 0.953856198102722 10328.87255372749
+3.056400000000025 0.9658828052436806 10372.003872918593
+3.056700000000025 0.9779094123846394 10415.135192109696
+3.0570000000000253 1.0304419526910633 10451.175105756889
+3.0573000000000254 1.0915548734609526 10485.712845454924
+3.0576000000000256 1.152667794230842 10520.25058515296
+3.057900000000026 1.1439287158948568 10494.564685019719
+3.058200000000026 1.115448006799889 10451.858329126735
+3.058500000000026 1.0869672977049214 10409.151973233753
+3.0588000000000264 1.0830851900403906 10458.876249984745
+3.0591000000000266 1.087823259406383 10540.991328248885
+3.0594000000000268 1.0925613287723757 10623.106406513027
+3.059700000000027 1.0796376917840231 10770.854563760531
+3.060000000000027 1.0594199464458947 10945.708527198516
+3.0603000000000273 1.039202201107766 11120.562490636501
+3.0606000000000275 1.0387687184688625 11191.84428310572
+3.0609000000000277 1.0475910014070968 11214.671414950175
+3.061200000000028 1.0564132843453309 11237.49854679463
+3.061500000000028 1.065922023151975 11248.441128817525
+3.0618000000000283 1.0757825879360305 11253.292578766997
+3.0621000000000285 1.085643152720086 11258.144028716471
+3.0624000000000287 1.0825752296563014 11205.089985061453
+3.062700000000029 1.0724629699893307 11120.48501349248
+3.063000000000029 1.0623507103223602 11035.880041923509
+3.063300000000029 1.0501742563194019 11121.755757636252
+3.0636000000000294 1.0368352981512263 11303.642059948766
+3.0639000000000296 1.0234963399830508 11485.52836226128
+3.06420000000003 1.0341959598320773 11604.028529669136
+3.06450000000003 1.058512700080478 11686.622387226636
+3.06480000000003 1.0828294403288785 11769.216244784135
+3.0651000000000304 1.0922581586295563 11767.112372777985
+3.0654000000000305 1.0934296387717335 11718.033198952218
+3.0657000000000307 1.0946011189139104 11668.954025126453
+3.066000000000031 1.1021239056997958 11608.449531221402
+3.066300000000031 1.1130025384679716 11541.908229989083
+3.0666000000000313 1.1238811712361476 11475.366928756765
+3.0669000000000315 1.1253242008685613 11532.577024572374
+3.0672000000000317 1.122151273030843 11650.327096203375
+3.067500000000032 1.1189783451931246 11768.077167834377
+3.067800000000032 1.1224736152496355 11645.893397374364
+3.0681000000000322 1.128897439956959 11418.334924440229
+3.0684000000000324 1.1353212646642823 11190.776451506095
+3.0687000000000326 1.1443521855101055 11155.958980606623
+3.069000000000033 1.1543755425566828 11194.511703066748
+3.069300000000033 1.16439889960326 11233.064425526874
+3.069600000000033 1.180987863752937 11297.616441438115
+3.0699000000000334 1.199652235761561 11370.386911044221
+3.0702000000000336 1.218316607770185 11443.157380650327
+3.0705000000000338 1.2238929182588842 11482.575333594557
+3.070800000000034 1.2262259700636347 11513.728438522105
+3.071100000000034 1.228559021868385 11544.88154344965
+3.0714000000000343 1.2078563985077864 11464.619308090216
+3.0717000000000345 1.1830577523525863 11364.546072175857
+3.0720000000000347 1.158259106197386 11264.472836261497
+3.072300000000035 1.1342201491681732 11162.036297199455
+3.072600000000035 1.1102631109692291 11059.34491833149
+3.0729000000000353 1.0863060727702853 10956.653539463523
+3.0732000000000355 1.0946427418640683 10900.468009817907
+3.0735000000000356 1.104245261138656 10846.105418527215
+3.073800000000036 1.1145570834023282 10788.16136340904
+3.074100000000036 1.1496216114726203 10605.234160266718
+3.074400000000036 1.1846861395429125 10422.306957124396
+3.0747000000000364 1.215535029973429 10264.963631293786
+3.0750000000000366 1.2081760208733139 10339.496547554518
+3.075300000000037 1.2008170117731989 10414.029463815248
+3.075600000000037 1.2062102385852145 10462.11121251712
+3.075900000000037 1.2709811543392042 10387.029524604097
+3.0762000000000373 1.335752070093194 10311.947836691072
+3.0765000000000375 1.3931417064412637 10258.82144643038
+3.0768000000000377 1.4295349607754888 10268.147890073566
+3.077100000000038 1.4659282151097137 10277.474333716753
+3.077400000000038 1.520602562842655 10348.286750175508
+3.0777000000000383 1.6093341492391358 10533.64605969848
+3.0780000000000385 1.6980657356356166 10719.005369221451
+3.0783000000000387 1.7912010859852183 10790.879419385623
+3.078600000000039 1.8898442263552442 10720.817392681118
+3.078900000000039 1.9884873667252703 10650.75536597661
+3.0792000000000392 2.0871305070952966 0.0
diff --git a/py/picca/tests/delta_extraction/data/true_mean_cont_log.txt b/py/picca/tests/delta_extraction/data/true_mean_cont_log.txt
new file mode 100644
index 000000000..c63d59b84
--- /dev/null
+++ b/py/picca/tests/delta_extraction/data/true_mean_cont_log.txt
@@ -0,0 +1,209 @@
+# log_lambda mean_cont mean_cont_weight
+3.0171 1.0280894112229924 0.0
+3.0174000000000003 1.0425743174435782 2005.1597077880942
+3.0177000000000005 1.0212251004615176 1980.5835759184024
+3.0180000000000007 0.9922307945660748 1965.0650850846196
+3.018300000000001 0.9521111577542334 1960.8806258750124
+3.018600000000001 0.9047537509722773 1962.5491485446705
+3.0189000000000012 0.8924093504082167 1982.7902408342295
+3.0192000000000014 0.8909012632819336 2039.1790665630308
+3.0195000000000016 0.9111486398150658 1982.7155540200351
+3.019800000000002 0.8786958714524724 1966.2459085705962
+3.020100000000002 0.8412220231810464 1860.3853096894543
+3.020400000000002 0.8418906368319159 1865.8801621247455
+3.0207000000000024 0.8620072239753346 1964.3444662136042
+3.0210000000000026 0.8766161957647223 1945.2022254384763
+3.0213000000000028 0.8480061642699432 2020.5567129864633
+3.021600000000003 0.8479568502009307 1994.248344407635
+3.021900000000003 0.8548397184319503 1991.070411450949
+3.0222000000000033 0.8202330836964832 2036.0029261241812
+3.0225000000000035 0.8371490765653404 2047.3044303247277
+3.0228000000000037 0.8552171345670381 2043.768416627532
+3.023100000000004 0.8357338904016409 2116.0996212250957
+3.023400000000004 0.8332485467577884 2122.9595435896
+3.0237000000000043 0.8230568085829463 2117.2866880039246
+3.0240000000000045 0.8506014872486228 2078.2142967213913
+3.0243000000000047 0.8728705130268198 2141.849142987408
+3.024600000000005 0.861903688736716 2069.795810004882
+3.024900000000005 0.8680502906492396 2055.388299326345
+3.025200000000005 0.8667444313481236 2079.063626158846
+3.0255000000000054 0.8971741601837973 2088.513890967987
+3.0258000000000056 0.9134640952490465 2127.408114643762
+3.026100000000006 0.9068914802312867 2041.221708513911
+3.026400000000006 0.899455913776142 2141.805326750093
+3.026700000000006 0.9256682529861723 2133.494913861776
+3.0270000000000064 0.9049151391835583 2152.9423457308053
+3.0273000000000065 0.9092931948601974 2241.3512026823046
+3.0276000000000067 0.9026401834728258 2241.0251917633077
+3.027900000000007 0.8709360751304627 2255.4427859210455
+3.028200000000007 0.8512152521800477 2205.3520823294916
+3.0285000000000073 0.8543329913505584 2254.8594764626077
+3.0288000000000075 0.8796762250761814 2242.6394704687514
+3.0291000000000077 0.896330914845877 2318.12322335855
+3.029400000000008 0.8671035631216388 2305.676120449563
+3.029700000000008 0.8580723133874302 2306.5596074660366
+3.0300000000000082 0.8663458717428634 2349.940154726229
+3.0303000000000084 0.8632780159325559 2384.4909388105348
+3.0306000000000086 0.8818893017668819 2325.7160909924137
+3.030900000000009 0.8849532414413973 2351.8905265727954
+3.031200000000009 0.8854587691049166 2315.68140332639
+3.031500000000009 0.8734461187915372 2331.1668064132455
+3.0318000000000094 0.844137588817052 2397.3801282866075
+3.0321000000000096 0.8354143345868049 2414.5119151129647
+3.0324000000000098 0.8228516592578775 2359.8519612853825
+3.03270000000001 0.8069667263422123 2420.51256741613
+3.03300000000001 0.7916674988444538 2460.1659468600274
+3.0333000000000103 0.8038509304750414 2426.600473908314
+3.0336000000000105 0.8140646728608681 2447.9206892137554
+3.0339000000000107 0.8050994978639214 2452.9931537805733
+3.034200000000011 0.8055026804174293 2483.193085559562
+3.034500000000011 0.7996502231344966 2479.4884609538394
+3.0348000000000113 0.7999865757244934 2476.7093122874458
+3.0351000000000115 0.8080743723005503 2471.2933223815035
+3.0354000000000116 0.8326582390819707 2444.16319545582
+3.035700000000012 0.8140727803703965 2506.7720639290246
+3.036000000000012 0.8178705688530075 2541.5766867428947
+3.036300000000012 0.8284907918713799 2626.6794051722854
+3.0366000000000124 0.8231862087774888 2595.7998585508076
+3.0369000000000126 0.7967214321461218 2521.6165268840973
+3.037200000000013 0.7680935448276381 2528.009967465435
+3.037500000000013 0.7780718692201752 2557.288267854299
+3.037800000000013 0.7553858089110735 2575.746399547026
+3.0381000000000133 0.8059170785555284 2558.3416497988774
+3.0384000000000135 0.8099446556974069 2550.6697129210597
+3.0387000000000137 0.8087934120953292 2619.9064446085526
+3.039000000000014 0.8003063355489717 2614.3413500954853
+3.039300000000014 0.796854148464948 2627.041872260723
+3.0396000000000143 0.8232862878620506 2588.6984272841096
+3.0399000000000145 0.7984341735402617 2604.9659110357056
+3.0402000000000147 0.8087912850191197 2639.0356951470467
+3.040500000000015 0.8457686352214198 2690.6126628856987
+3.040800000000015 0.8181627785861271 2738.6825965869307
+3.0411000000000152 0.8059338729551337 2808.275087323748
+3.0414000000000154 0.8175093552362568 2831.165231756181
+3.0417000000000156 0.7855579425767345 2791.816756614121
+3.042000000000016 0.7696760289558086 2725.4072642923293
+3.042300000000016 0.7935589542136892 2723.367096429308
+3.042600000000016 0.8038943809808394 2790.3355446348282
+3.0429000000000164 0.7990633184168908 2690.2050136643193
+3.0432000000000166 0.8249832337639044 2648.8674077251117
+3.0435000000000167 0.8107514918719676 2698.3297779623927
+3.043800000000017 0.8023897991018134 2691.2345267263295
+3.044100000000017 0.817996867182766 2742.661755194151
+3.0444000000000173 0.8154581505515305 2675.2017978505464
+3.0447000000000175 0.8152538690658624 2656.375176228997
+3.0450000000000177 0.8214129246373143 2615.54745409002
+3.045300000000018 0.8409874610293465 2658.2043255445246
+3.045600000000018 0.8207392283366075 2687.125264508373
+3.0459000000000183 0.8470428205741339 2633.792724505258
+3.0462000000000184 0.8523532384470079 2652.6299722415783
+3.0465000000000186 0.8627482954078044 2696.124966651789
+3.046800000000019 0.8771614249848135 2697.76493981587
+3.047100000000019 0.8901935411719484 2785.790676061741
+3.047400000000019 0.8809424561962756 2754.1094860761455
+3.0477000000000194 0.855839655081109 2749.4399601322707
+3.0480000000000196 0.877765099753925 2777.304409215992
+3.0483000000000198 0.8898440785979677 2771.472043075983
+3.04860000000002 0.8615641653231202 2752.9956675947283
+3.04890000000002 0.8623277517723398 2819.5822482793315
+3.0492000000000203 0.881958879830276 2777.7902464551025
+3.0495000000000205 1.0283683292601777 2832.1980541111625
+3.0498000000000207 1.0451184274894794 2961.1860480488863
+3.050100000000021 1.0345618270571582 2930.595109358464
+3.050400000000021 1.0134906197221123 2919.2846006422837
+3.0507000000000213 0.9966965680962799 2925.1854917899127
+3.0510000000000215 1.0276632295713164 2896.000256834634
+3.0513000000000217 1.0064262555228296 2847.2046248691186
+3.051600000000022 1.0292904996887997 2926.697169128632
+3.051900000000022 1.0909850211850363 2967.0660050429096
+3.0522000000000222 1.1045671260410845 2985.7256353886764
+3.0525000000000224 1.1111524902193346 3064.5561148557113
+3.0528000000000226 1.0439473767206557 3064.8895104786047
+3.053100000000023 1.0005338773801304 3087.0015836621014
+3.053400000000023 0.9859499402441281 2997.527121790252
+3.053700000000023 0.9707261974730339 3009.3895857395846
+3.0540000000000234 0.9772025663900136 3074.612001579881
+3.0543000000000236 1.0017034330125385 3189.7381468425283
+3.0546000000000237 1.086277491300028 3111.8980929558807
+3.054900000000024 1.008782859392107 3110.214298754942
+3.055200000000024 0.946793939750892 3103.890088120178
+3.0555000000000243 0.9732167502178716 3176.486999268699
+3.0558000000000245 0.9534689087850308 3103.616170244574
+3.0561000000000247 0.9404720207633412 3058.8090692467986
+3.056400000000025 0.9743657351398103 3110.5216638611455
+3.056700000000025 0.9870388470369909 3043.8556018342565
+3.0570000000000253 1.0610103754813405 3032.211664744079
+3.0573000000000254 1.205646769618851 3139.0717478342963
+3.0576000000000256 1.1828972611912472 3208.688447423319
+3.057900000000026 1.1414346398470223 3105.4197742554898
+3.058200000000026 1.1234475646937452 3099.242436033189
+3.058500000000026 1.1019920347288885 3166.2282997848356
+3.0588000000000264 1.0913273017324374 3180.209713651343
+3.0591000000000266 1.0719788157475034 3212.545367353224
+3.0594000000000268 1.1059225892072304 3229.9009332830033
+3.059700000000027 1.096646032818442 3244.0281388217454
+3.060000000000027 1.1126744500019423 3312.1828367260787
+3.0603000000000273 1.085757033904259 3373.8308856043946
+3.0606000000000275 1.047829707539071 3395.434915765929
+3.0609000000000277 1.0377784470766491 3376.0834324977645
+3.061200000000028 1.079258230682509 3352.0935207026096
+3.061500000000028 1.0892238955414328 3405.3874843004787
+3.0618000000000283 1.073240256600951 3362.3693210678334
+3.0621000000000285 1.1140125695277305 3410.5287203369467
+3.0624000000000287 1.1350238157684929 3400.8700681007103
+3.062700000000029 1.0656285522987896 3362.4594982429326
+3.063000000000029 1.109995508168235 3410.280836818639
+3.063300000000029 1.0846123329764583 3390.447501372352
+3.0636000000000294 1.0382992109003768 3440.3358390970902
+3.0639000000000296 1.096895877240009 3490.527571750575
+3.06420000000003 1.0908716045039244 3519.3680029852317
+3.06450000000003 1.1009187395236113 3580.782297596679
+3.06480000000003 1.102303935963778 3611.8198334090703
+3.0651000000000304 1.0765353427435236 3620.1067960432856
+3.0654000000000305 1.0666879053212484 3607.927930613512
+3.0657000000000307 1.1157112426693516 3547.1602507498687
+3.066000000000031 1.1751387656010879 3511.0886267273163
+3.066300000000031 1.135125833939788 3531.397332377168
+3.0666000000000313 1.1197555827936796 3416.409224449786
+3.0669000000000315 1.1236632451092567 3505.2707486043587
+3.0672000000000317 1.1408248607693845 3592.8837734574477
+3.067500000000032 1.1310671144445523 3590.067041974187
+3.067800000000032 1.1401197450860803 3582.240037808315
+3.0681000000000322 1.1727389084091517 3468.5013562526447
+3.0684000000000324 1.19309776579232 3444.3167254541327
+3.0687000000000326 1.2042972503918448 3489.894329579187
+3.069000000000033 1.214122995068554 3516.3567403167144
+3.069300000000033 1.2038651580516653 3450.6551985928786
+3.069600000000033 1.192878963885623 3513.1870950940424
+3.0699000000000334 1.221183565531823 3501.04067522763
+3.0702000000000336 1.2470033572999382 3484.98454078151
+3.0705000000000338 1.2546655682018293 3482.028426535232
+3.070800000000034 1.2747849761390138 3401.0640510021412
+3.071100000000034 1.1984111767839403 3461.5104640389704
+3.0714000000000343 1.1527436004175462 3469.8686171026598
+3.0717000000000345 1.2086069412164477 3472.972635514487
+3.0720000000000347 1.216849576337803 3398.426591828706
+3.072300000000035 1.1706336857523325 3440.6381941167347
+3.072600000000035 1.105049366247719 3372.6713168812785
+3.0729000000000353 1.0809353317978678 3362.7930661581267
+3.0732000000000355 1.134927705094169 3384.1002977356316
+3.0735000000000356 1.1755158011501834 3323.9468424993165
+3.073800000000036 1.1825086724574454 3307.9159505703783
+3.074100000000036 1.1401665246695225 3253.270246670219
+3.074400000000036 1.1558331924584342 3177.3845081920535
+3.0747000000000364 1.185048110297015 3124.6828619668768
+3.0750000000000366 1.2410639858693717 3158.573974799126
+3.075300000000037 1.2435394355419205 3154.409230298069
+3.075600000000037 1.2555741107530094 3131.77481038943
+3.075900000000037 1.3086742537750131 3129.4935755301535
+3.0762000000000373 1.329203448237353 3203.882352306157
+3.0765000000000375 1.3428150670757961 3213.6590519741458
+3.0768000000000377 1.4949346665046561 3199.5016211362013
+3.077100000000038 1.533493695211551 3152.908425270851
+3.077400000000038 1.519347985712259 3206.8438340155276
+3.0777000000000383 1.622197119810127 3247.8390158186353
+3.0780000000000385 1.6930281419198907 3330.7708996437027
+3.0783000000000387 1.8601496367944033 3313.3846508493107
+3.078600000000039 1.9696952882765524 3189.424399541502
+3.078900000000039 1.9705696500309635 3225.242803405335
+3.0792000000000392 1.9452929376947274 0.0
diff --git a/py/picca/tests/delta_extraction/expected_flux_tests.py b/py/picca/tests/delta_extraction/expected_flux_tests.py
index e2a084fc5..d9deed09e 100644
--- a/py/picca/tests/delta_extraction/expected_flux_tests.py
+++ b/py/picca/tests/delta_extraction/expected_flux_tests.py
@@ -31,7 +31,6 @@
 
 class ExpectedFluxTest(AbstractTest):
     """Test class ExpectedFlux and its childs.
-
     Methods
     -------
     compare_ascii (from AbstractTest)
@@ -51,7 +50,6 @@ class ExpectedFluxTest(AbstractTest):
     """
     def test_dr16_expected_flux(self):
         """Test constructor for class Dr16ExpectedFlux
-
         Load an Dr16ExpectedFlux instance.
         """
         config = ConfigParser()
@@ -101,7 +99,7 @@ def test_dr16_expected_flux_compute_continuum_lin(self):
         out_file = f"{THIS_DIR}/results/continua_lin.txt"
         test_file = f"{THIS_DIR}/data/continua_lin.txt"
 
-        # initialize Data and Dr16ExpectedFlux instances
+        # initialize DesiHealpix and Dr16ExpectedFlux instances
         config = ConfigParser()
         config.read_dict({
             "data": desi_healpix_kwargs,
@@ -122,7 +120,8 @@ def test_dr16_expected_flux_compute_continuum_lin(self):
 
         # compute the forest continua
         for forest in data.forests:
-            cont_model, bad_continuum_reason, continuum_fit_parameters = expected_flux.compute_continuum(forest)
+            (cont_model, bad_continuum_reason,
+             continuum_fit_parameters) = expected_flux.compute_continuum(forest)
             forest.bad_continuum_reason = bad_continuum_reason
             forest.continuum = cont_model
 
@@ -206,7 +205,8 @@ def test_dr16_expected_flux_compute_continuum_log(self):
 
         # compute the forest continua
         for forest in data.forests:
-            cont_model, bad_continuum_reason, continuum_fit_parameters = expected_flux.compute_continuum(forest)
+            (cont_model, bad_continuum_reason,
+             continuum_fit_parameters) = expected_flux.compute_continuum(forest)
             forest.bad_continuum_reason = bad_continuum_reason
             forest.continuum = cont_model
 
@@ -277,7 +277,8 @@ def test_dr16_expected_flux_compute_delta_stack_lin(self):
 
         # compute the forest continua
         for forest in data.forests:
-            cont_model, bad_continuum_reason, continuum_fit_parameters = expected_flux.compute_continuum(forest)
+            (cont_model, bad_continuum_reason,
+             continuum_fit_parameters) = expected_flux.compute_continuum(forest)
             forest.bad_continuum_reason = bad_continuum_reason
             forest.continuum = cont_model
 
@@ -334,7 +335,8 @@ def test_dr16_expected_flux_compute_delta_stack_log(self):
 
         # compute the forest continua
         for forest in data.forests:
-            cont_model, bad_continuum_reason, continuum_fit_parameters = expected_flux.compute_continuum(forest)
+            (cont_model, bad_continuum_reason,
+             continuum_fit_parameters) = expected_flux.compute_continuum(forest)
             forest.bad_continuum_reason = bad_continuum_reason
             forest.continuum = cont_model
 
@@ -465,7 +467,8 @@ def test_dr16_expected_flux_compute_mean_cont_lin(self):
 
         # compute the forest continua
         for forest in data.forests:
-            cont_model, bad_continuum_reason, continuum_fit_parameters = expected_flux.compute_continuum(forest)
+            (cont_model, bad_continuum_reason,
+             continuum_fit_parameters) = expected_flux.compute_continuum(forest)
             forest.bad_continuum_reason = bad_continuum_reason
             forest.continuum = cont_model
 
@@ -522,7 +525,8 @@ def test_dr16_expected_flux_compute_mean_cont_log(self):
 
         # compute the forest continua
         for forest in data.forests:
-            cont_model, bad_continuum_reason, continuum_fit_parameters = expected_flux.compute_continuum(forest)
+            (cont_model, bad_continuum_reason,
+             continuum_fit_parameters) = expected_flux.compute_continuum(forest)
             forest.bad_continuum_reason = bad_continuum_reason
             forest.continuum = cont_model
 
@@ -554,7 +558,6 @@ def test_dr16_expected_flux_compute_var_stats_lin(self):
         """Test method compute_var_stats for class Dr16ExpectedFlux with
         linear wavelength solution
         """
-        reset_forest()
         setup_forest("lin")
 
         out_file = f"{THIS_DIR}/results/var_stats_lin.txt"
@@ -581,7 +584,8 @@ def test_dr16_expected_flux_compute_var_stats_lin(self):
 
         # compute the forest continua
         for forest in data.forests:
-            cont_model, bad_continuum_reason, continuum_fit_parameters = expected_flux.compute_continuum(forest)
+            (cont_model, bad_continuum_reason,
+             continuum_fit_parameters) = expected_flux.compute_continuum(forest)
             forest.bad_continuum_reason = bad_continuum_reason
             forest.continuum = cont_model
 
@@ -646,7 +650,8 @@ def test_dr16_expected_flux_compute_var_stats_log(self):
 
         # compute the forest continua
         for forest in data.forests:
-            cont_model, bad_continuum_reason, continuum_fit_parameters = expected_flux.compute_continuum(forest)
+            (cont_model, bad_continuum_reason,
+             continuum_fit_parameters) = expected_flux.compute_continuum(forest)
             forest.bad_continuum_reason = bad_continuum_reason
             forest.continuum = cont_model
 
@@ -683,54 +688,43 @@ def test_dr16_expected_flux_compute_var_stats_log(self):
 
     def test_dr16_expected_flux_parse_config(self):
         """Test method __parse_config for class Dr16ExpectedFlux"""
+        # Forest variables need to be initialize to finish ExpectedFlux.__init__
+        setup_forest("log", rebin=3)
+
         # create a Dr16ExpectedFlux with missing ExpectedFlux Options
         config = ConfigParser()
         config.read_dict({"expected_flux": {
         }})
         expected_message = (
-            "Missing argument 'out dir' required by ExpectedFlux"
+            "Missing argument 'iter out prefix' required by ExpectedFlux"
         )
         with self.assertRaises(ExpectedFluxError) as context_manager:
             Dr16ExpectedFlux(config["expected_flux"])
         self.compare_error_message(context_manager, expected_message)
 
-        # create a Dr16ExpectedFlux with missing iter_out_prefix
+        # create a Dr16ExpectedFlux with missing 'force stack delta to zero'
         config = ConfigParser()
         config.read_dict({"expected_flux": {
+            "iter out prefix": f"iter_out_prefix",
             "out dir": f"{THIS_DIR}/results/",
+            "num bins variance": 20,
             "num processors": 1
         }})
         expected_message = (
-            "Missing argument 'iter out prefix' required by Dr16ExpectedFlux"
+            "Missing argument 'force stack delta to zero' required by Dr16ExpectedFlux"
         )
         with self.assertRaises(ExpectedFluxError) as context_manager:
             Dr16ExpectedFlux(config["expected_flux"])
         self.compare_error_message(context_manager, expected_message)
 
-        # create a Dr16ExpectedFlux with invalid iter_out_prefix
-        config = ConfigParser()
-        config.read_dict(
-            {"expected flux": {
-                "iter out prefix": f"{THIS_DIR}/results/iter_out_prefix",
-                "out dir": f"{THIS_DIR}/results/",
-                "num processors": 1
-            }})
-        for key, value in defaults_dr16_expected_flux.items():
-            if key not in config["expected flux"]:
-                config["expected flux"][key] = str(value)
-        expected_message = (
-            "Error constructing Dr16ExpectedFlux. 'iter out prefix' should not "
-            f"incude folders. Found: {THIS_DIR}/results/iter_out_prefix")
-        with self.assertRaises(ExpectedFluxError) as context_manager:
-            Dr16ExpectedFlux(config["expected flux"])
-        self.compare_error_message(context_manager, expected_message)
-
         # create a Dr16ExpectedFlux with missing 'limit eta'
         config = ConfigParser()
         config.read_dict({"expected_flux": {
             "iter out prefix": f"iter_out_prefix",
             "out dir": f"{THIS_DIR}/results/",
-            "num processors": 1
+            "num bins variance": 20,
+            "num processors": 1,
+            "force stack delta to zero": True,
         }})
         expected_message = (
             "Missing argument 'limit eta' required by Dr16ExpectedFlux"
@@ -744,7 +738,9 @@ def test_dr16_expected_flux_parse_config(self):
         config.read_dict({"expected_flux": {
             "iter out prefix": f"iter_out_prefix",
             "out dir": f"{THIS_DIR}/results/",
+            "num bins variance": 20,
             "num processors": 1,
+            "force stack delta to zero": True,
             "limit eta": "0.0, 1.90",
         }})
         expected_message = (
@@ -754,17 +750,19 @@ def test_dr16_expected_flux_parse_config(self):
             Dr16ExpectedFlux(config["expected_flux"])
         self.compare_error_message(context_manager, expected_message)
 
-        # create a Dr16ExpectedFlux with missing num_bins_vairance
+        # create a Dr16ExpectedFlux with missing num_iterations
         config = ConfigParser()
         config.read_dict({"expected_flux": {
             "iter out prefix": f"iter_out_prefix",
             "out dir": f"{THIS_DIR}/results/",
+            "num bins variance": 20,
             "num processors": 1,
+            "force stack delta to zero": True,
             "limit eta": "0.0, 1.90",
             "limit var lss": "0.0, 1.90",
         }})
         expected_message = (
-            "Missing argument 'num bins variance' required by Dr16ExpectedFlux"
+            "Missing argument 'min qso in fit' required by Dr16ExpectedFlux"
         )
         with self.assertRaises(ExpectedFluxError) as context_manager:
             Dr16ExpectedFlux(config["expected_flux"])
@@ -775,10 +773,12 @@ def test_dr16_expected_flux_parse_config(self):
         config.read_dict({"expected_flux": {
             "iter out prefix": f"iter_out_prefix",
             "out dir": f"{THIS_DIR}/results/",
+            "num bins variance": 20,
             "num processors": 1,
+            "force stack delta to zero": True,
             "limit eta": "0.0, 1.90",
             "limit var lss": "0.0, 1.90",
-            "num bins variance": 20,
+            "min num qso in fit": 100,
         }})
         expected_message = (
             "Missing argument 'num iterations' required by Dr16ExpectedFlux"
@@ -792,10 +792,12 @@ def test_dr16_expected_flux_parse_config(self):
         config.read_dict({"expected_flux": {
             "iter out prefix": f"iter_out_prefix",
             "out dir": f"{THIS_DIR}/results/",
+            "num bins variance": 20,
             "num processors": 1,
+            "force stack delta to zero": True,
             "limit eta": "0.0, 1.90",
             "limit var lss": "0.0, 1.90",
-            "num bins variance": 20,
+            "min num qso in fit": 100,
             "num iterations": 5,
         }})
         expected_message = (
@@ -810,10 +812,12 @@ def test_dr16_expected_flux_parse_config(self):
         config.read_dict({"expected_flux": {
             "iter out prefix": f"iter_out_prefix",
             "out dir": f"{THIS_DIR}/results/",
+            "num bins variance": 20,
             "num processors": 1,
+            "force stack delta to zero": True,
             "limit eta": "0.0, 1.90",
             "limit var lss": "0.0, 1.90",
-            "num bins variance": 20,
+            "min num qso in fit": 100,
             "num iterations": 5,
             "order": 1,
         }})
@@ -829,10 +833,12 @@ def test_dr16_expected_flux_parse_config(self):
         config.read_dict({"expected_flux": {
             "iter out prefix": f"iter_out_prefix",
             "out dir": f"{THIS_DIR}/results/",
+            "num bins variance": 20,
             "num processors": 1,
+            "force stack delta to zero": True,
             "limit eta": "0.0, 1.90",
             "limit var lss": "0.0, 1.90",
-            "num bins variance": 20,
+            "min num qso in fit": 100,
             "num iterations": 5,
             "order": 1,
             "use constant weight": False,
@@ -844,17 +850,17 @@ def test_dr16_expected_flux_parse_config(self):
             Dr16ExpectedFlux(config["expected_flux"])
         self.compare_error_message(context_manager, expected_message)
 
-
-        setup_forest("log", rebin=3)
         # create a Dr16ExpectedFlux instance; case: limit eta and limit var_lss with ()
         config = ConfigParser()
         config.read_dict({"expected_flux": {
             "iter out prefix": f"iter_out_prefix",
             "out dir": f"{THIS_DIR}/results/",
+            "num bins variance": 20,
             "num processors": 1,
+            "force stack delta to zero": True,
             "limit eta": "(0.0, 1.90)",
             "limit var lss": "(0.5, 1.40)",
-            "num bins variance": 20,
+            "min num qso in fit": 100,
             "num iterations": 5,
             "order": 1,
             "use constant weight": False,
@@ -869,10 +875,12 @@ def test_dr16_expected_flux_parse_config(self):
         config.read_dict({"expected_flux": {
             "iter out prefix": f"iter_out_prefix",
             "out dir": f"{THIS_DIR}/results/",
+            "num bins variance": 20,
             "num processors": 1,
+            "force stack delta to zero": True,
             "limit eta": "[0.0, 1.90]",
             "limit var lss": "[0.5, 1.40]",
-            "num bins variance": 20,
+            "min num qso in fit": 100,
             "num iterations": 5,
             "order": 1,
             "use constant weight": False,
@@ -888,10 +896,12 @@ def test_dr16_expected_flux_parse_config(self):
         config.read_dict({"expected_flux": {
             "iter out prefix": f"iter_out_prefix",
             "out dir": f"{THIS_DIR}/results/",
+            "num bins variance": 20,
             "num processors": 1,
+            "force stack delta to zero": True,
             "limit eta": "0.0, 1.90",
             "limit var lss": "0.5, 1.40",
-            "num bins variance": 20,
+            "min num qso in fit": 100,
             "num iterations": 5,
             "order": 1,
             "use constant weight": False,
@@ -927,7 +937,8 @@ def test_dr16_expected_flux_populate_los_ids(self):
 
         # compute the forest continua
         for forest in data.forests:
-            cont_model, bad_continuum_reason, continuum_fit_parameters = expected_flux.compute_continuum(forest)
+            (cont_model, bad_continuum_reason,
+             continuum_fit_parameters) = expected_flux.compute_continuum(forest)
             forest.bad_continuum_reason = bad_continuum_reason
             forest.continuum = cont_model
 
@@ -968,7 +979,8 @@ def test_dr16_expected_flux_save_iteration_step_lin(self):
 
         # compute the forest continua
         for forest in data.forests:
-            cont_model, bad_continuum_reason, continuum_fit_parameters = expected_flux.compute_continuum(forest)
+            (cont_model, bad_continuum_reason,
+             continuum_fit_parameters) = expected_flux.compute_continuum(forest)
             forest.bad_continuum_reason = bad_continuum_reason
             forest.continuum = cont_model
 
@@ -1014,7 +1026,8 @@ def test_dr16_expected_flux_save_iteration_step_log(self):
 
         # compute the forest continua
         for forest in data.forests:
-            cont_model, bad_continuum_reason, continuum_fit_parameters = expected_flux.compute_continuum(forest)
+            (cont_model, bad_continuum_reason,
+             continuum_fit_parameters) = expected_flux.compute_continuum(forest)
             forest.bad_continuum_reason = bad_continuum_reason
             forest.continuum = cont_model
 
@@ -1031,17 +1044,28 @@ def test_dr16_expected_flux_save_iteration_step_log(self):
 
     def test_expected_flux(self):
         """Test Abstract class ExpectedFlux
-
         Load an ExpectedFlux instance.
         """
         # initialize ExpectedFlux instance
         config = ConfigParser()
         config.read_dict({
             "expected flux": {
+                "iter out prefix": "delta_attributes",
                 "out dir": f"{THIS_DIR}/results/",
-                "num processors": 1
+                "num bins variance": 20,
+                "num processors": 1,
             },
         })
+        # this should raise an error as Forest variables are not defined
+        expected_message = (
+            "Forest class variables need to be set before initializing "
+            "variables here.")
+        with self.assertRaises(ExpectedFluxError) as context_manager:
+            expected_flux = ExpectedFlux(config["expected flux"])
+        self.compare_error_message(context_manager, expected_message)
+
+        # setup Forest variables; case: logarithmic wavelength solution
+        setup_forest("log", rebin=3)
         expected_flux = ExpectedFlux(config["expected flux"])
 
         # compute_expected_flux should not be defined
@@ -1068,14 +1092,41 @@ def test_expected_flux(self):
         expected_flux.extract_deltas(forest)
         self.assertTrue(all(forest.deltas == np.zeros_like(forest1.flux)))
 
-    def test_dr16_expected_flux_parse_config(self):
+    def test_expected_flux_parse_config(self):
         """Test method __parse_config for class Dr16ExpectedFlux"""
-        # create a ExpectedFlux with missing out_dir
+        # create a ExpectedFlux with missing iter_out_prefix
         config = ConfigParser()
         config.read_dict({"expected_flux": {
         }})
         expected_message = (
-            "Missing argument 'out dir' required by ExpectedFlux"
+            "Missing argument 'iter out prefix' required by ExpectedFlux"
+        )
+        with self.assertRaises(ExpectedFluxError) as context_manager:
+            ExpectedFlux(config["expected_flux"])
+        self.compare_error_message(context_manager, expected_message)
+
+        # create a ExpectedFlux with invalid iter_out_prefix
+        config = ConfigParser()
+        config.read_dict({"expected flux": {
+            "iter out prefix": f"{THIS_DIR}/results/iter_out_prefix",
+        }})
+        for key, value in defaults_dr16_expected_flux.items():
+            if key not in config["expected flux"]:
+                config["expected flux"][key] = str(value)
+        expected_message = (
+            "Error constructing ExpectedFlux. 'iter out prefix' should not "
+            f"incude folders. Found: {THIS_DIR}/results/iter_out_prefix")
+        with self.assertRaises(ExpectedFluxError) as context_manager:
+            ExpectedFlux(config["expected flux"])
+        self.compare_error_message(context_manager, expected_message)
+
+        # create a ExpectedFlux with missing num_bins_variance
+        config = ConfigParser()
+        config.read_dict({"expected_flux": {
+            "iter out Prefix": f"delta_attributes",
+        }})
+        expected_message = (
+            "Missing argument 'num bins variance' required by ExpectedFlux"
         )
         with self.assertRaises(ExpectedFluxError) as context_manager:
             ExpectedFlux(config["expected_flux"])
@@ -1084,7 +1135,8 @@ def test_dr16_expected_flux_parse_config(self):
         # create a ExpectedFlux with missing num_processors
         config = ConfigParser()
         config.read_dict({"expected_flux": {
-            "out dir": f"{THIS_DIR}/results/",
+            "iter out Prefix": f"delta_attributes",
+            "num bins variance": 20,
         }})
         expected_message = (
             "Missing argument 'num processors' required by ExpectedFlux"
@@ -1093,30 +1145,24 @@ def test_dr16_expected_flux_parse_config(self):
             ExpectedFlux(config["expected_flux"])
         self.compare_error_message(context_manager, expected_message)
 
+        # create a ExpectedFlux with missing out_dir
+        config = ConfigParser()
+        config.read_dict({"expected_flux": {
+            "iter out Prefix": f"delta_attributes",
+            "num bins variance": 20,
+            "num processors": 1,
+        }})
+        expected_message = (
+            "Missing argument 'out dir' required by ExpectedFlux"
+        )
+        with self.assertRaises(ExpectedFluxError) as context_manager:
+            ExpectedFlux(config["expected_flux"])
+        self.compare_error_message(context_manager, expected_message)
+
     def test_true_continuum(self):
         """Test constructor for class TrueContinuum
-
         Load a TrueContinuum instance.
         """
-        config = ConfigParser()
-        config.read_dict({
-                "expected flux": {
-                     "input directory": f"{THIS_DIR}/data",
-                     "iter out prefix": f"{THIS_DIR}/results/iter_out_prefix",
-                     "out dir": f"{THIS_DIR}/results",
-                     "num processors": 1,
-                }})
-        for key, value in defaults_true_continuum.items():
-            if key not in config["expected flux"]:
-                config["expected flux"][key] = str(value)
-        # this should raise an error as iter out prefix should not have a folder
-        with self.assertRaises(ExpectedFluxError) as context_manager:
-            expected_flux = TrueContinuum(config["expected flux"])
-        expected_message = (
-            "Error constructing TrueContinuum. 'iter out prefix' should not incude folders. Found: "
-            )
-        self.compare_error_message(context_manager, expected_message, startswith=True)
-
         config = ConfigParser()
         config.read_dict(
             {"expected flux": {
@@ -1160,12 +1206,13 @@ def test_true_continuum(self):
             )
         self.compare_error_message(context_manager, expected_message)
 
-    def test_true_continuum_read_raw_statistics_lin(self):
-        """Test reading raw statistics files for linear wavelength solution"""
+    def test_true_continuum_compute_mean_cont_lin(self):
+        """Test method compute_mean_cont for class TrueContinuum using
+        linear wave solution"""
         setup_forest("lin", pixel_step=2.4)
 
-        out_file = f"{THIS_DIR}/results/true_continuum_raw_stats_lin.txt"
-        test_file = f"{THIS_DIR}/data/true_continuum_raw_stats_lin.txt"
+        out_file = f"{THIS_DIR}/results/true_continuum_mean_cont_lin.txt"
+        test_file = f"{THIS_DIR}/data/true_continuum_mean_cont_lin.txt"
 
         # initialize Data and Dr16ExpectedFlux instances
         config = ConfigParser()
@@ -1173,10 +1220,10 @@ def test_true_continuum_read_raw_statistics_lin(self):
             "data": desi_mock_data_kwargs,
             "expected flux": {
                 "type": "TrueContinuum",
-                "input directory": f"{THIS_DIR}/data/data",
+                "input directory": f"{THIS_DIR}/data",
                 "iter out prefix": "iter_out_prefix",
-                "out dir": f"{THIS_DIR}/results/",
                 "num processors": 1,
+                "out dir": f"{THIS_DIR}/results/",
             },
         })
 
@@ -1186,47 +1233,51 @@ def test_true_continuum_read_raw_statistics_lin(self):
         for key, value in defaults_desisim_data.items():
             if key not in config["data"]:
                 config["data"][key] = str(value)
+        data = DesisimMocks(config["data"])
         expected_flux = TrueContinuum(config["expected flux"])
 
+        expected_flux.compute_expected_flux(data.forests)
+
         # save results
         f = open(out_file, "w")
-        f.write("# log_lambda var_lss mean_flux\n")
+        f.write("# log_lambda mean_cont mean_cont_weight\n")
         for log_lambda in np.arange(3.0171, 3.079 + 3e-4, 3e-4):
-            f.write(f"{log_lambda} {expected_flux.get_var_lss(log_lambda)} "
-                    f"{expected_flux.get_mean_flux(log_lambda)}\n")
+            f.write(f"{log_lambda} {expected_flux.get_mean_cont(log_lambda)} "
+                    f"{expected_flux.get_mean_cont_weight(log_lambda)}\n")
         f.close()
 
         # load the expected results
         expectations = np.genfromtxt(test_file, names=True)
 
-        # compare var_lss data with obtained results
-        var_lss = expected_flux.get_var_lss(expectations["log_lambda"])
-        if not np.allclose(var_lss, expectations["var_lss"]):
+        # compare mean_cont data with obtained results
+        mean_cont = expected_flux.get_mean_cont(expectations["log_lambda"])
+        if not np.allclose(mean_cont, expectations["mean_cont"]):
             print(f"\nOriginal file: {test_file}")
             print(f"New file: {out_file}")
-            print("Difference found in var_lss")
+            print("Difference found in mean_cont")
             print(f"result test are_close result-test")
-            for i1, i2 in zip(mean_cont, expectations["var_lss"]):
+            for i1, i2 in zip(mean_cont, expectations["mean_cont"]):
                 print(i1, i2, np.isclose(i1, i2), i1-i2)
-        self.assertTrue(np.allclose(var_lss, expectations["var_lss"]))
+        self.assertTrue(np.allclose(mean_cont, expectations["mean_cont"]))
 
         # compare mean_flux data with obtained results
-        mean_flux = expected_flux.get_mean_flux(expectations["log_lambda"])
-        if not np.allclose(mean_flux, expectations["mean_flux"]):
+        mean_cont_weight = expected_flux.get_mean_cont_weight(expectations["log_lambda"])
+        if not np.allclose(mean_cont_weight, expectations["mean_cont_weight"]):
             print(f"\nOriginal file: {test_file}")
             print(f"New file: {out_file}")
-            print("Difference found in mean_flux")
+            print("Difference found in mean_cont_weight")
             print(f"result test are_close result-test")
-            for i1, i2 in zip(mean_cont, expectations["mean_flux"]):
+            for i1, i2 in zip(mean_cont_weight, expectations["mean_cont_weight"]):
                 print(i1, i2, np.isclose(i1, i2), i1-i2)
-        self.assertTrue(np.allclose(mean_flux, expectations["mean_flux"]))
+        self.assertTrue(np.allclose(mean_cont_weight, expectations["mean_cont_weight"]))
 
-    def test_true_continuum_read_raw_statistics_log(self):
-        """Test reading raw statistics files for logarithmic wavelength solution"""
+    def test_true_continuum_compute_mean_cont_log(self):
+        """Test method compute_mean_cont for class TrueContinuum using
+        logarithmic wave solution"""
         setup_forest("log", rebin=3)
 
-        out_file = f"{THIS_DIR}/results/true_continuum_raw_stats_log.txt"
-        test_file = f"{THIS_DIR}/data/true_continuum_raw_stats_log.txt"
+        out_file = f"{THIS_DIR}/results/true_continuum_mean_cont_log.txt"
+        test_file = f"{THIS_DIR}/data/true_continuum_mean_cont_log.txt"
 
         # initialize Data and Dr16ExpectedFlux instances
         config = ConfigParser()
@@ -1236,10 +1287,10 @@ def test_true_continuum_read_raw_statistics_log(self):
             "data": kwargs,
             "expected flux": {
                 "type": "TrueContinuum",
-                "input directory": f"{THIS_DIR}/data/data",
+                "input directory": f"{THIS_DIR}/data",
                 "iter out prefix": "iter_out_prefix",
-                "num processors": 1,
                 "out dir": f"{THIS_DIR}/results/",
+                "num processors": 1,
             },
         })
 
@@ -1249,48 +1300,52 @@ def test_true_continuum_read_raw_statistics_log(self):
         for key, value in defaults_desisim_data.items():
             if key not in config["data"]:
                 config["data"][key] = str(value)
+        data = DesisimMocks(config["data"])
         expected_flux = TrueContinuum(config["expected flux"])
 
+        # compute the expected flux
+        expected_flux.compute_expected_flux(data.forests)
+
         # save results
         f = open(out_file, "w")
-        f.write("# log_lambda var_lss mean_flux\n")
+        f.write("# log_lambda mean_cont mean_cont_weight\n")
         for log_lambda in np.arange(3.0171, 3.079 + 3e-4, 3e-4):
-            f.write(f"{log_lambda} {expected_flux.get_var_lss(log_lambda)} "
-                    f"{expected_flux.get_mean_flux(log_lambda)}\n")
+            f.write(f"{log_lambda} {expected_flux.get_mean_cont(log_lambda)} "
+                    f"{expected_flux.get_mean_cont_weight(log_lambda)}\n")
         f.close()
 
         # load the expected results
         expectations = np.genfromtxt(test_file, names=True)
 
-        # compare var_lss data with obtained results
-        var_lss = expected_flux.get_var_lss(expectations["log_lambda"])
-        if not np.allclose(var_lss, expectations["var_lss"]):
+        # compare mean_cont data with obtained results
+        mean_cont = expected_flux.get_mean_cont(expectations["log_lambda"])
+        if not np.allclose(mean_cont, expectations["mean_cont"]):
             print(f"\nOriginal file: {test_file}")
             print(f"New file: {out_file}")
-            print("Difference found in var_lss")
+            print("Difference found in mean_cont")
             print(f"result test are_close result-test")
-            for i1, i2 in zip(mean_cont, expectations["var_lss"]):
+            for i1, i2 in zip(mean_cont, expectations["mean_cont"]):
                 print(i1, i2, np.isclose(i1, i2), i1-i2)
-        self.assertTrue(np.allclose(var_lss, expectations["var_lss"]))
+        self.assertTrue(np.allclose(mean_cont, expectations["mean_cont"]))
 
         # compare mean_flux data with obtained results
-        mean_flux = expected_flux.get_mean_flux(expectations["log_lambda"])
-        if not np.allclose(mean_flux, expectations["mean_flux"]):
+        mean_cont_weight = expected_flux.get_mean_cont_weight(expectations["log_lambda"])
+        if not np.allclose(mean_cont_weight, expectations["mean_cont_weight"]):
             print(f"\nOriginal file: {test_file}")
             print(f"New file: {out_file}")
-            print("Difference found in mean_flux")
+            print("Difference found in mean_cont_weight")
             print(f"result test are_close result-test")
-            for i1, i2 in zip(mean_cont, expectations["mean_flux"]):
+            for i1, i2 in zip(mean_cont_weight, expectations["mean_cont_weight"]):
                 print(i1, i2, np.isclose(i1, i2), i1-i2)
-        self.assertTrue(np.allclose(mean_flux, expectations["mean_flux"]))
-
+        self.assertTrue(np.allclose(mean_cont_weight, expectations["mean_cont_weight"]))
 
-    def test_true_continuum_read_true_continuum_lin(self):
-        """Test reading true continuum from mocks for linear wavelength solution"""
+    def test_true_continuum_expected_flux_lin(self):
+        """Test method compute expected flux for class TrueContinuum for
+        linear wavelength solution"""
         setup_forest("lin", pixel_step=2.4)
 
-        out_file = f"{THIS_DIR}/results/continua_true_lin.txt"
-        test_file = f"{THIS_DIR}/data/continua_true_lin.txt"
+        out_file = f"{THIS_DIR}/results/Log/true_iter_out_prefix_compute_expected_flux_lin.fits.gz"
+        test_file = f"{THIS_DIR}/data/true_iter_out_prefix_compute_expected_flux_lin.fits.gz"
 
         # initialize Data and Dr16ExpectedFlux instances
         config = ConfigParser()
@@ -1299,9 +1354,9 @@ def test_true_continuum_read_true_continuum_lin(self):
             "expected flux": {
                 "type": "TrueContinuum",
                 "input directory": f"{THIS_DIR}/data",
-                "iter out prefix": "iter_out_prefix",
-                "out dir": f"{THIS_DIR}/results/",
+                "iter out prefix": "true_iter_out_prefix_compute_expected_flux_lin",
                 "num processors": 1,
+                "out dir": f"{THIS_DIR}/results/",
             },
         })
 
@@ -1314,64 +1369,18 @@ def test_true_continuum_read_true_continuum_lin(self):
         data = DesisimMocks(config["data"])
         expected_flux = TrueContinuum(config["expected flux"])
 
-        # save the results
-        f = open(out_file, "w")
-        f.write("# thingid cont[0] ... cont[N]\n")
-        for forest in data.forests:
-            expected_flux.read_true_continuum_one_healpix([forest])
-            f.write(f"{forest.los_id} ")
-            if forest.continuum is not None:
-                for item in forest.continuum:
-                    f.write(f"{item} ")
-            f.write("\n")
-        f.close()
-
-        # load test results
-        continua = {}
-        f = open(test_file)
-        for line in f.readlines():
-            if line.startswith("#"):
-                continue
-            cols = line.split()
-            los_id = int(cols[0])
-            if len(cols) == 1:
-                continuum = None
-            else:
-                continuum = np.array([float(item) for item in cols[1:]])
-            continua[los_id] = continuum
-        f.close()
+        expected_flux.compute_expected_flux(data.forests)
 
-        # compare the results
-        correct_forests = 0
-        for forest in data.forests:
-            if forest.continuum is None:
-                if continua.get(forest.los_id) is not None:
-                    print(f"For forest with los_id {forest.los_id}, new continuum "
-                          "is None. Expected continua:")
-                    print(continua.get(forest.los_id))
-                self.assertTrue(continua.get(forest.los_id) is None)
-            elif continua.get(forest.los_id) is None:
-                self.assertTrue(forest.continuum is None)
-            else:
-                if not np.allclose(forest.continuum, continua.get(forest.los_id)):
-                    print("Difference found in forest.continuum")
-                    print(f"forest.los_id: {forest.los_id}")
-                    print(f"result test are_close result-test")
-                    for i1, i2 in zip(forest.continuum, continua.get(forest.los_id)):
-                        print(i1, i2, np.isclose(i1, i2), i1-i2)
-                self.assertTrue(
-                    np.allclose(forest.continuum, continua.get(forest.los_id)))
-            correct_forests += 1
+        # check the results
+        self.compare_fits(test_file, out_file)
 
-        # check that we loaded all quasars
-        self.assertTrue(correct_forests == len(continua))
-
-    def test_true_continuum_read_true_continuum_log(self):
-        """Test reading true continuum from mocks for logarithmic wavelength solution"""
+    def test_true_continuum_expected_flux_log(self):
+        """Test method compute expected flux for class TrueContinuum for
+        logarithmic wavelength solution"""
         setup_forest("log", rebin=3)
 
-        out_file = f"{THIS_DIR}/results/continua_true_log.txt"
-        test_file = f"{THIS_DIR}/data/continua_true_log.txt"
+        out_file = f"{THIS_DIR}/results/Log/true_iter_out_prefix_compute_expected_flux_log.fits.gz"
+        test_file = f"{THIS_DIR}/data/true_iter_out_prefix_compute_expected_flux_log.fits.gz"
 
         # initialize Data and Dr16ExpectedFlux instances
         config = ConfigParser()
@@ -1382,7 +1391,7 @@ def test_true_continuum_read_true_continuum_log(self):
             "expected flux": {
                 "type": "TrueContinuum",
                 "input directory": f"{THIS_DIR}/data",
-                "iter out prefix": "iter_out_prefix",
+                "iter out prefix": "true_iter_out_prefix_compute_expected_flux_log",
                 "out dir": f"{THIS_DIR}/results/",
                 "num processors": 1,
             },
@@ -1397,65 +1406,18 @@ def test_true_continuum_read_true_continuum_log(self):
         data = DesisimMocks(config["data"])
         expected_flux = TrueContinuum(config["expected flux"])
 
-        # save the results
-        f = open(out_file, "w")
-        f.write("# thingid cont[0] ... cont[N]\n")
-        for forest in data.forests:
-            expected_flux.read_true_continuum_one_healpix([forest])
-            f.write(f"{forest.los_id} ")
-            if forest.continuum is not None:
-                for item in forest.continuum:
-                    f.write(f"{item} ")
-            f.write("\n")
-        f.close()
-
-        # load the test results
-        continua = {}
-        f = open(test_file)
-        for line in f.readlines():
-            if line.startswith("#"):
-                continue
-            cols = line.split()
-            los_id = int(cols[0])
-            if len(cols) == 1:
-                continuum = None
-            else:
-                continuum = np.array([float(item) for item in cols[1:]])
-            continua[los_id] = continuum
-        f.close()
-
-        # compare the results
-        correct_forests = 0
-        for forest in data.forests:
-            if forest.continuum is None:
-                if continua.get(forest.los_id) is not None:
-                    print(f"For forest with los_id {forest.los_id}, new continuum "
-                          "is None. Expected continua:")
-                    print(continua.get(forest.los_id))
-                self.assertTrue(continua.get(forest.los_id) is None)
-            elif continua.get(forest.los_id) is None:
-                self.assertTrue(forest.continuum is None)
-            else:
-                if not np.allclose(forest.continuum, continua.get(forest.los_id)):
-                    print("Difference found in forest.continuum")
-                    print(f"forest.los_id: {forest.los_id}")
-                    print(f"result test are_close result-test")
-                    for i1, i2 in zip(forest.continuum, continua.get(forest.los_id)):
-                        print(i1, i2, np.isclose(i1, i2), i1-i2)
-                self.assertTrue(
-                    np.allclose(forest.continuum, continua.get(forest.los_id)))
-            correct_forests += 1
+        # compute the expected flux
+        expected_flux.compute_expected_flux(data.forests)
 
-        # check that we loaded all quasars
-        self.assertTrue(correct_forests == len(continua))
+        # check the results
+        self.compare_fits(test_file, out_file)
 
-    def test_true_continuum_expected_flux_lin(self):
-        """Test method compute expected flux for class TrueContinuum for
-        linear wavelength solution"""
+    def test_true_continuum_read_raw_statistics_lin(self):
+        """Test reading raw statistics files for linear wavelength solution"""
         setup_forest("lin", pixel_step=2.4)
 
-        out_file = f"{THIS_DIR}/results/Log/true_iter_out_prefix_compute_expected_flux_lin.fits.gz"
-        test_file = f"{THIS_DIR}/data/true_iter_out_prefix_compute_expected_flux_lin.fits.gz"
+        out_file = f"{THIS_DIR}/results/true_continuum_raw_stats_lin.txt"
+        test_file = f"{THIS_DIR}/data/true_continuum_raw_stats_lin.txt"
 
         # initialize Data and Dr16ExpectedFlux instances
         config = ConfigParser()
@@ -1463,10 +1425,10 @@ def test_true_continuum_expected_flux_lin(self):
             "data": desi_mock_data_kwargs,
             "expected flux": {
                 "type": "TrueContinuum",
-                "input directory": f"{THIS_DIR}/data",
-                "iter out prefix": "true_iter_out_prefix_compute_expected_flux_lin",
-                "num processors": 1,
+                "input directory": f"{THIS_DIR}/data/data",
+                "iter out prefix": "iter_out_prefix",
                 "out dir": f"{THIS_DIR}/results/",
+                "num processors": 1,
             },
         })
 
@@ -1476,21 +1438,47 @@ def test_true_continuum_expected_flux_lin(self):
         for key, value in defaults_desisim_data.items():
             if key not in config["data"]:
                 config["data"][key] = str(value)
-        data = DesisimMocks(config["data"])
         expected_flux = TrueContinuum(config["expected flux"])
 
-        expected_flux.compute_expected_flux(data.forests)
+        # save results
+        f = open(out_file, "w")
+        f.write("# log_lambda var_lss mean_flux\n")
+        for log_lambda in np.arange(3.0171, 3.079 + 3e-4, 3e-4):
+            f.write(f"{log_lambda} {expected_flux.get_var_lss(log_lambda)} "
+                    f"{expected_flux.get_mean_flux(log_lambda)}\n")
+        f.close()
 
-        # check the results
-        self.compare_fits(test_file, out_file)
+        # load the expected results
+        expectations = np.genfromtxt(test_file, names=True)
 
-    def test_true_continuum_expected_flux_log(self):
-        """Test method compute expected flux for class TrueContinuum for
-        logarithmic wavelength solution"""
+        # compare var_lss data with obtained results
+        var_lss = expected_flux.get_var_lss(expectations["log_lambda"])
+        if not np.allclose(var_lss, expectations["var_lss"]):
+            print(f"\nOriginal file: {test_file}")
+            print(f"New file: {out_file}")
+            print("Difference found in var_lss")
+            print(f"result test are_close result-test")
+            for i1, i2 in zip(mean_cont, expectations["var_lss"]):
+                print(i1, i2, np.isclose(i1, i2), i1-i2)
+        self.assertTrue(np.allclose(var_lss, expectations["var_lss"]))
+
+        # compare mean_flux data with obtained results
+        mean_flux = expected_flux.get_mean_flux(expectations["log_lambda"])
+        if not np.allclose(mean_flux, expectations["mean_flux"]):
+            print(f"\nOriginal file: {test_file}")
+            print(f"New file: {out_file}")
+            print("Difference found in mean_flux")
+            print(f"result test are_close result-test")
+            for i1, i2 in zip(mean_cont, expectations["mean_flux"]):
+                print(i1, i2, np.isclose(i1, i2), i1-i2)
+        self.assertTrue(np.allclose(mean_flux, expectations["mean_flux"]))
+
+    def test_true_continuum_read_raw_statistics_log(self):
+        """Test reading raw statistics files for logarithmic wavelength solution"""
         setup_forest("log", rebin=3)
 
-        out_file = f"{THIS_DIR}/results/Log/true_iter_out_prefix_compute_expected_flux_log.fits.gz"
-        test_file = f"{THIS_DIR}/data/true_iter_out_prefix_compute_expected_flux_log.fits.gz"
+        out_file = f"{THIS_DIR}/results/true_continuum_raw_stats_log.txt"
+        test_file = f"{THIS_DIR}/data/true_continuum_raw_stats_log.txt"
 
         # initialize Data and Dr16ExpectedFlux instances
         config = ConfigParser()
@@ -1500,10 +1488,10 @@ def test_true_continuum_expected_flux_log(self):
             "data": kwargs,
             "expected flux": {
                 "type": "TrueContinuum",
-                "input directory": f"{THIS_DIR}/data",
-                "iter out prefix": "true_iter_out_prefix_compute_expected_flux_log",
-                "out dir": f"{THIS_DIR}/results/",
+                "input directory": f"{THIS_DIR}/data/data",
+                "iter out prefix": "iter_out_prefix",
                 "num processors": 1,
+                "out dir": f"{THIS_DIR}/results/",
             },
         })
 
@@ -1513,22 +1501,47 @@ def test_true_continuum_expected_flux_log(self):
         for key, value in defaults_desisim_data.items():
             if key not in config["data"]:
                 config["data"][key] = str(value)
-        data = DesisimMocks(config["data"])
         expected_flux = TrueContinuum(config["expected flux"])
 
-        # compute the expected flux
-        expected_flux.compute_expected_flux(data.forests)
+        # save results
+        f = open(out_file, "w")
+        f.write("# log_lambda var_lss mean_flux\n")
+        for log_lambda in np.arange(3.0171, 3.079 + 3e-4, 3e-4):
+            f.write(f"{log_lambda} {expected_flux.get_var_lss(log_lambda)} "
+                    f"{expected_flux.get_mean_flux(log_lambda)}\n")
+        f.close()
 
-        # check the results
-        self.compare_fits(test_file, out_file)
+        # load the expected results
+        expectations = np.genfromtxt(test_file, names=True)
 
-    def test_true_cont_compute_mean_cont_lin(self):
-        """Test method compute_mean_cont for class TrueContinuum using
-        linear wave solution"""
+        # compare var_lss data with obtained results
+        var_lss = expected_flux.get_var_lss(expectations["log_lambda"])
+        if not np.allclose(var_lss, expectations["var_lss"]):
+            print(f"\nOriginal file: {test_file}")
+            print(f"New file: {out_file}")
+            print("Difference found in var_lss")
+            print(f"result test are_close result-test")
+            for i1, i2 in zip(mean_cont, expectations["var_lss"]):
+                print(i1, i2, np.isclose(i1, i2), i1-i2)
+        self.assertTrue(np.allclose(var_lss, expectations["var_lss"]))
+
+        # compare mean_flux data with obtained results
+        mean_flux = expected_flux.get_mean_flux(expectations["log_lambda"])
+        if not np.allclose(mean_flux, expectations["mean_flux"]):
+            print(f"\nOriginal file: {test_file}")
+            print(f"New file: {out_file}")
+            print("Difference found in mean_flux")
+            print(f"result test are_close result-test")
+            for i1, i2 in zip(mean_cont, expectations["mean_flux"]):
+                print(i1, i2, np.isclose(i1, i2), i1-i2)
+        self.assertTrue(np.allclose(mean_flux, expectations["mean_flux"]))
+
+    def test_true_continuum_read_true_continuum_lin(self):
+        """Test reading true continuum from mocks for linear wavelength solution"""
         setup_forest("lin", pixel_step=2.4)
 
-        out_file = f"{THIS_DIR}/results/true_continuum_mean_cont_lin.txt"
-        test_file = f"{THIS_DIR}/data/true_continuum_mean_cont_lin.txt"
+        out_file = f"{THIS_DIR}/results/continua_true_lin.txt"
+        test_file = f"{THIS_DIR}/data/continua_true_lin.txt"
 
         # initialize Data and Dr16ExpectedFlux instances
         config = ConfigParser()
@@ -1538,8 +1551,8 @@ def test_true_cont_compute_mean_cont_lin(self):
                 "type": "TrueContinuum",
                 "input directory": f"{THIS_DIR}/data",
                 "iter out prefix": "iter_out_prefix",
-                "num processors": 1,
                 "out dir": f"{THIS_DIR}/results/",
+                "num processors": 1,
             },
         })
 
@@ -1552,48 +1565,64 @@ def test_true_cont_compute_mean_cont_lin(self):
         data = DesisimMocks(config["data"])
         expected_flux = TrueContinuum(config["expected flux"])
 
-        expected_flux.compute_expected_flux(data.forests)
-
-        # save results
+        # save the results
         f = open(out_file, "w")
-        f.write("# log_lambda mean_cont mean_cont_weight\n")
-        for log_lambda in np.arange(3.0171, 3.079 + 3e-4, 3e-4):
-            f.write(f"{log_lambda} {expected_flux.get_mean_cont(log_lambda)} "
-                    f"{expected_flux.get_mean_cont_weight(log_lambda)}\n")
+        f.write("# thingid cont[0] ... cont[N]\n")
+        for forest in data.forests:
+            expected_flux.read_true_continuum_one_healpix([forest])
+            f.write(f"{forest.los_id} ")
+            if forest.continuum is not None:
+                for item in forest.continuum:
+                    f.write(f"{item} ")
+            f.write("\n")
         f.close()
 
-        # load the expected results
-        expectations = np.genfromtxt(test_file, names=True)
+        # load test results
+        continua = {}
+        f = open(test_file)
+        for line in f.readlines():
+            if line.startswith("#"):
+                continue
+            cols = line.split()
+            los_id = int(cols[0])
+            if len(cols) == 1:
+                continuum = None
+            else:
+                continuum = np.array([float(item) for item in cols[1:]])
+            continua[los_id] = continuum
+        f.close()
 
-        # compare mean_cont data with obtained results
-        mean_cont = expected_flux.get_mean_cont(expectations["log_lambda"])
-        if not np.allclose(mean_cont, expectations["mean_cont"]):
-            print(f"\nOriginal file: {test_file}")
-            print(f"New file: {out_file}")
-            print("Difference found in mean_cont")
-            print(f"result test are_close result-test")
-            for i1, i2 in zip(mean_cont, expectations["mean_cont"]):
-                print(i1, i2, np.isclose(i1, i2), i1-i2)
-        self.assertTrue(np.allclose(mean_cont, expectations["mean_cont"]))
+        # compare the results
+        correct_forests = 0
+        for forest in data.forests:
+            if forest.continuum is None:
+                if continua.get(forest.los_id) is not None:
+                    print(f"For forest with los_id {forest.los_id}, new continuum "
+                          "is None. Expected continua:")
+                    print(continua.get(forest.los_id))
+                self.assertTrue(continua.get(forest.los_id) is None)
+            elif continua.get(forest.los_id) is None:
+                self.assertTrue(forest.continuum is None)
+            else:
+                if not np.allclose(forest.continuum, continua.get(forest.los_id)):
+                    print("Difference found in forest.continuum")
+                    print(f"forest.los_id: {forest.los_id}")
+                    print(f"result test are_close result-test")
+                    for i1, i2 in zip(forest.continuum, continua.get(forest.los_id)):
+                        print(i1, i2, np.isclose(i1, i2), i1-i2)
+                self.assertTrue(
+                    np.allclose(forest.continuum, continua.get(forest.los_id)))
+            correct_forests += 1
 
-        # compare mean_flux data with obtained results
-        mean_cont_weight = expected_flux.get_mean_cont_weight(expectations["log_lambda"])
-        if not np.allclose(mean_cont_weight, expectations["mean_cont_weight"]):
-            print(f"\nOriginal file: {test_file}")
-            print(f"New file: {out_file}")
-            print("Difference found in mean_cont_weight")
-            print(f"result test are_close result-test")
-            for i1, i2 in zip(mean_cont_weight, expectations["mean_cont_weight"]):
-                print(i1, i2, np.isclose(i1, i2), i1-i2)
-        self.assertTrue(np.allclose(mean_cont_weight, expectations["mean_cont_weight"]))
+        # check that we loaded all quasars
+        self.assertTrue(correct_forests == len(continua))
 
-    def test_true_cont_compute_mean_cont_log(self):
-        """Test method compute_mean_cont for class TrueContinuum using
-        logarithmic wave solution"""
+    def test_true_continuum_read_true_continuum_log(self):
+        """Test reading true continuum from mocks for logarithmic wavelength solution"""
         setup_forest("log", rebin=3)
 
-        out_file = f"{THIS_DIR}/results/true_continuum_mean_cont_log.txt"
-        test_file = f"{THIS_DIR}/data/true_continuum_mean_cont_log.txt"
+        out_file = f"{THIS_DIR}/results/continua_true_log.txt"
+        test_file = f"{THIS_DIR}/data/continua_true_log.txt"
 
         # initialize Data and Dr16ExpectedFlux instances
         config = ConfigParser()
@@ -1619,41 +1648,57 @@ def test_true_cont_compute_mean_cont_log(self):
         data = DesisimMocks(config["data"])
         expected_flux = TrueContinuum(config["expected flux"])
 
-        # compute the expected flux
-        expected_flux.compute_expected_flux(data.forests)
-
-        # save results
+        # save the results
         f = open(out_file, "w")
-        f.write("# log_lambda mean_cont mean_cont_weight\n")
-        for log_lambda in np.arange(3.0171, 3.079 + 3e-4, 3e-4):
-            f.write(f"{log_lambda} {expected_flux.get_mean_cont(log_lambda)} "
-                    f"{expected_flux.get_mean_cont_weight(log_lambda)}\n")
+        f.write("# thingid cont[0] ... cont[N]\n")
+        for forest in data.forests:
+            expected_flux.read_true_continuum_one_healpix([forest])
+            f.write(f"{forest.los_id} ")
+            if forest.continuum is not None:
+                for item in forest.continuum:
+                    f.write(f"{item} ")
+            f.write("\n")
         f.close()
 
-        # load the expected results
-        expectations = np.genfromtxt(test_file, names=True)
+        # load the test results
+        continua = {}
+        f = open(test_file)
+        for line in f.readlines():
+            if line.startswith("#"):
+                continue
+            cols = line.split()
+            los_id = int(cols[0])
+            if len(cols) == 1:
+                continuum = None
+            else:
+                continuum = np.array([float(item) for item in cols[1:]])
+            continua[los_id] = continuum
+        f.close()
 
-        # compare mean_cont data with obtained results
-        mean_cont = expected_flux.get_mean_cont(expectations["log_lambda"])
-        if not np.allclose(mean_cont, expectations["mean_cont"]):
-            print(f"\nOriginal file: {test_file}")
-            print(f"New file: {out_file}")
-            print("Difference found in mean_cont")
-            print(f"result test are_close result-test")
-            for i1, i2 in zip(mean_cont, expectations["mean_cont"]):
-                print(i1, i2, np.isclose(i1, i2), i1-i2)
-        self.assertTrue(np.allclose(mean_cont, expectations["mean_cont"]))
+        # compare the results
+        correct_forests = 0
+        for forest in data.forests:
+            if forest.continuum is None:
+                if continua.get(forest.los_id) is not None:
+                    print(f"For forest with los_id {forest.los_id}, new continuum "
+                          "is None. Expected continua:")
+                    print(continua.get(forest.los_id))
+                self.assertTrue(continua.get(forest.los_id) is None)
+            elif continua.get(forest.los_id) is None:
+                self.assertTrue(forest.continuum is None)
+            else:
+                if not np.allclose(forest.continuum, continua.get(forest.los_id)):
+                    print("Difference found in forest.continuum")
+                    print(f"forest.los_id: {forest.los_id}")
+                    print(f"result test are_close result-test")
+                    for i1, i2 in zip(forest.continuum, continua.get(forest.los_id)):
+                        print(i1, i2, np.isclose(i1, i2), i1-i2)
+                self.assertTrue(
+                    np.allclose(forest.continuum, continua.get(forest.los_id)))
+            correct_forests += 1
 
-        # compare mean_flux data with obtained results
-        mean_cont_weight = expected_flux.get_mean_cont_weight(expectations["log_lambda"])
-        if not np.allclose(mean_cont_weight, expectations["mean_cont_weight"]):
-            print(f"\nOriginal file: {test_file}")
-            print(f"New file: {out_file}")
-            print("Difference found in mean_cont_weight")
-            print(f"result test are_close result-test")
-            for i1, i2 in zip(mean_cont_weight, expectations["mean_cont_weight"]):
-                print(i1, i2, np.isclose(i1, i2), i1-i2)
-        self.assertTrue(np.allclose(mean_cont_weight, expectations["mean_cont_weight"]))
+        # check that we loaded all quasars
+        self.assertTrue(correct_forests == len(continua))
 
     def test_true_continuum_populate_los_ids(self):
         """Test method populate_los_ids for class TrueContinuum"""