Eureka
Eureka copied to clipboard
Comprehensive Unit Testing
I've got minimum viable testing functionality up in my branch. Currently we do NIRCam S3-S5 and NIRSpec S2-S5. The S5 tests are just set to "fit" the "lightcurve" with least-squares and a bare transit model.
I need to test:
- Other fitters (emcee, dynesty)
- Other systematics (polynomial, exponential)
- Other Instruments (MIRI, NIRISS)
Other goals:
- Split instruments and their test cases off into cleaner subdirectories.
- Possibly test photometry modes (whenever Sebastian figures that out?)
Keeping this open indefinitely until I get all this done.
I can start helping more with writing testing code - I've been slacking off in that category. We should look into pytest-cov and/or Coverage.py to assess our testing coverage and understand where we should be increasing our efforts. My understanding is that pytest-cov is the only one that handles multi-threaded code, so it's potentially best if use that one unless it is too hard to work with
So pytest-cov ended up being super easy. Just pip install pytest-cov
and then just use pytest --cov=..
instead of pytest
which then gives the following summary afterwards:
---------- coverage: platform darwin, python 3.9.7-final-0 -----------
Name Stmts Miss Cover
-----------------------------------------------------------------------------------------------------------------------
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S1_detector_processing/__init__.py 2 0 100%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S1_detector_processing/ramp_fitting.py 235 203 14%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S1_detector_processing/s1_process.py 91 77 15%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S2_calibrations/__init__.py 1 0 100%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S2_calibrations/s2_calibrate.py 135 23 83%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/__init__.py 13 0 100%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/background.py 228 146 36%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/bright2flux.py 82 18 78%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/hst_scan.py 505 505 0%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/julday.py 10 8 20%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/miri.py 53 42 21%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/nircam.py 37 0 100%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/niriss.py 273 242 11%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/niriss_profiles.py 25 16 36%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/nirspec.py 36 4 89%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/optspex.py 259 180 31%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/plots_s3.py 97 7 93%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/s3_reduce.py 228 38 83%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/sigrej.py 58 24 59%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/source_pos.py 44 12 73%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/wfc3.py 277 277 0%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/wfc3_1reduce.py 394 394 0%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S4_generate_lightcurves/__init__.py 3 0 100%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S4_generate_lightcurves/drift.py 44 35 20%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S4_generate_lightcurves/plots_s4.py 74 30 59%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S4_generate_lightcurves/s4_genLC.py 180 36 80%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S4_generate_lightcurves/wfc3_2genLC.py 157 157 0%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/__init__.py 11 0 100%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/fitters.py 499 372 25%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/lightcurve.py 88 21 76%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/likelihood.py 86 26 70%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/limb_darkening_fit.py 206 164 20%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/modelgrid.py 267 237 11%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/models/BatmanModels.py 82 40 51%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/models/ExpRampModel.py 35 4 89%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/models/Model.py 145 32 78%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/models/PolynomialModel.py 38 4 89%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/models/SinusoidPhaseCurve.py 77 64 17%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/models/__init__.py 5 0 100%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/parameters.py 75 14 81%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/plots_s5.py 164 66 60%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/s5_fit.py 223 64 71%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/simulations.py 45 8 82%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/utils.py 269 207 23%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S6_planet_spectra/__init__.py 2 0 100%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S6_planet_spectra/plots_s6.py 49 45 8%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S6_planet_spectra/s6_spectra.py 250 231 8%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/__init__.py 11 0 100%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/__init__.py 25 0 100%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/astropytable.py 58 13 78%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/centroid.py 33 27 18%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/clipping.py 51 40 22%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/correlated_noise.py 27 23 15%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/demc.py 601 589 2%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/disk.py 12 10 17%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/gaussian.py 175 163 7%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/gelmanrubin.py 22 19 14%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/hiloerr.py 37 35 5%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/integrate.py 11 10 9%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/julday.py 10 10 0%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/logedit.py 22 4 82%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/manageevent.py 47 26 45%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/medstddev.py 45 41 9%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/modelsPOET.py 623 567 9%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/models_c/UnitTest.py 293 293 0%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/models_c/__init__.py 22 22 0%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/models_c/setup.py 19 19 0%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/nasc.py 147 139 5%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/orbit.py 297 263 11%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/plots.py 571 550 4%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/readECF.py 109 49 55%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/smooth.py 33 17 48%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/smoothing.py 67 61 9%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/sort_nicely.py 11 0 100%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/splinterp.py 5 3 40%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/suntimecorr.py 47 41 13%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/time2phase2.py 9 7 22%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/timer.py 34 27 21%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/univ.py 18 14 22%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/utc_tt.py 126 111 12%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/util.py 84 8 90%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/version.py 1 0 100%
__init__.py 3 0 100%
test_general.py 100 0 100%
test_lightcurve_fitting.py 91 0 100%
-----------------------------------------------------------------------------------------------------------------------
TOTAL 10054 7274 28%
Sounds good. 28% is actually better than I thought we'd be doing right now! I was mistaken about the coverage fraction needed for a JOSS paper (https://joss.readthedocs.io/en/latest/review_criteria.html, we actually don't need any specific coverage fraction, just that we have some functionality testing available), but it's still useful to have this info and I'll work on increasing this.
pytest --cov=.. --cov-report="term-missing"
gives an even more useful summary:
---------- coverage: platform darwin, python 3.9.7-final-0 -----------
Name Stmts Miss Cover Missing
---------------------------------------------------------------------------------------------------------------------------------
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S1_detector_processing/__init__.py 2 0 100%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S1_detector_processing/ramp_fitting.py 235 203 14% 56-152, 176-179, 198-205, 232-237, 294-407, 440-476, 506-566, 615-627, 644-659, 676-693
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S1_detector_processing/s1_process.py 91 77 15% 16, 41-113, 132-179
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S2_calibrations/__init__.py 1 0 100%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S2_calibrations/s2_calibrate.py 135 23 83% 92, 98, 110, 114-120, 131-132, 209, 264, 307-322
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/__init__.py 13 0 100%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/background.py 228 146 36% 50, 55-60, 76, 82-92, 99-107, 149-150, 165-167, 170, 182, 186-191, 195, 211, 225-231, 234-235, 280-386, 420-432, 455-490
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/bright2flux.py 82 18 78% 30-33, 79, 122-125, 187-193, 220-221, 224, 235-237
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/hst_scan.py 505 505 0% 1-1251
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/julday.py 10 8 20% 49-62
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/miri.py 53 42 21% 39-92, 108-118, 137, 145
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/nircam.py 37 0 100%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/niriss.py 273 242 11% 58-94, 119-134, 155-175, 203-284, 312-410, 432-450, 468-476, 494-496, 525-548, 568-572, 596-641, 662-691
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/niriss_profiles.py 25 16 36% 37-40, 56-66, 82-92, 109-116, 133-140
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/nirspec.py 36 4 89% 48-51
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/optspex.py 259 171 34% 29-76, 124-130, 148, 216-256, 284-329, 353-416, 478-488, 503-512, 520-528, 547, 550
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/plots_s3.py 97 7 93% 39, 79, 111, 164-165, 173, 212
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/s3_reduce.py 228 38 83% 112, 118, 167-168, 177, 182-188, 196, 202, 205, 218, 241-244, 258, 265-266, 295, 315, 330-334, 338, 373, 382, 390-401, 409
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/sigrej.py 58 24 59% 124-125, 128, 152, 177, 181-198, 201, 205, 207, 209, 211, 215
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/source_pos.py 44 12 73% 31, 37, 80, 112-127
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S3_data_reduction/wfc3.py 277 277 0% 3-501
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S4_generate_lightcurves/__init__.py 3 0 100%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S4_generate_lightcurves/drift.py 44 35 20% 37-38, 72-114
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S4_generate_lightcurves/plots_s4.py 74 30 59% 38, 52-60, 103, 124-134, 152-159
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S4_generate_lightcurves/s4_genLC.py 180 36 80% 78, 84-85, 128-129, 131, 133-134, 136, 148-150, 160-165, 170-183, 207-208, 243, 247-248, 256, 260, 277
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/__init__.py 11 0 100%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/fitters.py 499 372 25% 59, 70-71, 75-76, 78-79, 94-96, 98-102, 141-147, 196-197, 236-377, 380-435, 438-519, 556-685, 720-787, 853-858, 893-913, 916-934, 938, 943-944, 948-953, 957
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/lightcurve.py 88 21 76% 67-68, 75, 86, 88, 92, 137-138, 141, 143, 146-151, 182, 184-185, 213, 219-221
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/likelihood.py 86 26 70% 39-41, 43-48, 87, 91, 134, 139, 142, 145, 175-186, 280
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/limb_darkening_fit.py 206 164 20% 61-62, 66-67, 72, 76-79, 83-84, 88-89, 93-94, 98-99, 104, 108-113, 118-119, 152-170, 196-205, 242-368, 381-411, 424-506
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/modelgrid.py 267 237 11% 82-214, 225-249, 278-356, 382-430, 438-515, 542-598, 605-615, 621-626, 638-642
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/models/BatmanModels.py 82 40 51% 5-6, 28, 44, 68-69, 73, 76-83, 98-113, 118-150
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/models/ExpRampModel.py 35 4 89% 54-56, 62
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/models/Model.py 145 32 78% 32, 56, 79, 93-106, 132, 136, 161-162, 170, 174, 179-180, 187, 209, 233, 257, 272, 278-280, 288, 291-293, 302, 304
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/models/PolynomialModel.py 38 4 89% 55-57, 68
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/models/SinusoidPhaseCurve.py 77 64 17% 4-5, 16-42, 47, 51-55, 58-63, 68-122
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/models/__init__.py 5 0 100%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/parameters.py 75 14 81% 34-38, 69, 110-112, 117-118, 130, 157, 185
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/plots_s5.py 164 66 60% 40, 52, 59-63, 89, 121, 130-131, 156, 187-196, 235-281, 309, 322, 325-327, 343
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/s5_fit.py 223 64 71% 61, 69-70, 76, 116, 120, 129-143, 181-185, 193-194, 196-208, 210-211, 213-214, 226-230, 232-236, 238-242, 253, 263-265, 267-268, 282, 286, 294, 298, 316
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/simulations.py 45 8 82% 10-11, 84-88, 93
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S5_lightcurve_fitting/utils.py 269 207 23% 46-65, 80-145, 166, 169-179, 210-220, 236-244, 265-289, 309-322, 357-380, 401-419, 442-525, 545-567, 621-653, 680, 692-697
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S6_planet_spectra/__init__.py 2 0 100%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S6_planet_spectra/plots_s6.py 49 45 8% 9-70
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/S6_planet_spectra/s6_spectra.py 250 231 8% 22, 48-255, 258-305, 311-337, 342-366, 370-395
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/__init__.py 11 0 100%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/__init__.py 25 0 100%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/astropytable.py 58 13 78% 39-40, 77-78, 117-118, 140-148
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/centroid.py 33 27 18% 71-90, 135-176
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/clipping.py 51 40 22% 46-67, 94-99, 106-109, 137-164
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/correlated_noise.py 27 23 15% 13-35, 43-47
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/demc.py 601 589 2% 17-51, 58-80, 118-280, 289-342, 350-351, 391-658, 702-1001
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/disk.py 12 10 17% 84-101
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/gaussian.py 175 163 7% 182-213, 280-319, 325-347, 556-618, 672-697, 705-741, 767-789, 793-801
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/gelmanrubin.py 22 19 14% 30-53, 117-125
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/hiloerr.py 37 35 5% 74-90, 95-118
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/integrate.py 11 10 9% 35-48
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/julday.py 10 10 0% 7-69
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/logedit.py 22 4 82% 90-91, 123-124
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/manageevent.py 47 26 45% 91-100, 104-106, 152-160, 195-204
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/medstddev.py 45 41 9% 90-118, 144-159, 214-237
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/modelsPOET.py 623 567 9% 34-61, 88-105, 141-174, 214-280, 319-367, 392-395, 420-442, 465, 490-494, 518-524, 549-553, 578-583, 608-615, 640-648, 672-680, 705-709, 733-737, 761-769, 794-802, 828-835, 865-870, 894-898, 923-938, 966-982, 1012-1029, 1059-1079, 1105-1112, 1137-1146, 1171-1194, 1222-1230, 1260-1302, 1332-1344, 1367-1370, 1397-1400, 1429-1438, 1469-1493, 1537-1551, 1586-1614, 1675-1707, 1768-1800, 1826-1836, 1858-1869, 1893-1900, 1924-1936, 1965-1981, 2006-2010, 2050-2054, 2086-2095, 2102-2112, 2124-2130, 2137-2166, 2170-2180
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/models_c/UnitTest.py 293 293 0% 4-561
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/models_c/__init__.py 22 22 0% 1-33
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/models_c/setup.py 19 19 0% 1-33
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/nasc.py 147 139 5% 16-53, 65-122, 128-159, 166-217, 223-256
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/orbit.py 297 263 11% 67-74, 80-125, 141-166, 180-191, 194-205, 214-219, 231-236, 254-260, 270-277, 287-290, 293-296, 299-317, 335-354, 379-398, 406-413, 422-438, 457-466, 479-487, 497-500, 511-527, 530-531, 539-555, 567-568, 575-581, 584, 588-592
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/plots.py 571 550 4% 7-33, 106-128, 132-180, 183-264, 268-307, 311-350, 354-424, 428-472, 476-500, 504-530, 534-596, 601-656, 660-720, 724-744, 748-768
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/readECF.py 109 49 55% 104-113, 144, 158-211, 220-224
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/smooth.py 33 17 48% 36-64, 72-73
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/smoothing.py 67 61 9% 38-71, 74-79, 85-104, 107-129
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/sort_nicely.py 11 0 100%
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/splinterp.py 5 3 40% 46-48
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/suntimecorr.py 47 41 13% 59-73, 227-291
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/time2phase2.py 9 7 22% 42-48
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/timer.py 34 27 21% 22-27, 66-72, 87-97, 104-110
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/univ.py 18 14 22% 17-52
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/utc_tt.py 126 111 12% 18-50, 79-81, 86-93, 101-110, 114-122, 125-127, 130-132, 296-388, 427-429
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/lib/util.py 84 9 89% 20, 50-52, 71-74, 98, 111
/Users/tjbell1/Research/JWST/ERS/Eureka/eureka/version.py 1 0 100%
__init__.py 3 0 100%
test_general.py 100 0 100%
test_lightcurve_fitting.py 91 0 100%
---------------------------------------------------------------------------------------------------------------------------------
TOTAL 9503 6715 29%
Alright, in the dev/tjb branch I just added some tests for MIRI and WFC3, cleaned up the way in which tests are run (one testing file per instrument), increased coverage by doing slightly different things for each instrument (1 wavelength with lsq, dynesty, and emcee for NIRCam, 2 wavelengths with a shared lsq fit for NIRSpec), and significantly increased coverage by deleting a lot of files in the lib folder which we haven't used at all. We can always add the files back with a git checkout command or by grabbing them from Kevin's POET repo. There were some files which I kept as it seemed to me that we may want to use at least parts of them in the future. Some parts of the code we can pretty easily increase coverage of by adding NIRISS tests and an S1 test. With that, here is the current coverage:
Name Stmts Miss Cover Missing
-----------------------------------------------------------------------------------------
eureka/S1_detector_processing/__init__.py 2 0 100%
eureka/S1_detector_processing/ramp_fitting.py 235 203 14% 92-188, 212-215, 234-241, 268-273, 324-437, 473-509, 541-601, 652-664, 682-697, 715-732
eureka/S1_detector_processing/s1_process.py 89 75 16% 19, 49-117, 160-207
eureka/S2_calibrations/__init__.py 1 0 100%
eureka/S2_calibrations/s2_calibrate.py 133 24 82% 31, 87, 93, 105, 109-115, 126-127, 203, 258, 299-314
eureka/S3_data_reduction/__init__.py 12 0 100%
eureka/S3_data_reduction/background.py 228 133 42% 56, 60, 76, 82-92, 149-150, 165-167, 170, 182, 186-191, 195, 211, 225-231, 234-235, 280-386, 420-432, 455-490
eureka/S3_data_reduction/bright2flux.py 82 17 79% 29-32, 119-122, 184-190, 218-219, 222, 233-235
eureka/S3_data_reduction/hst_scan.py 505 387 23% 40-79, 168-176, 201-232, 255-256, 262-263, 272-273, 334-336, 433-491, 503-529, 551-569, 615-633, 649-656, 660-671, 706-925, 982-1028, 1054-1102, 1128-1205, 1225-1227, 1233-1251
eureka/S3_data_reduction/miri.py 56 7 88% 7-9, 72-78
eureka/S3_data_reduction/nircam.py 36 0 100%
eureka/S3_data_reduction/niriss.py 272 241 11% 58-92, 117-132, 153-173, 201-282, 310-408, 430-448, 466-474, 492-494, 523-546, 566-570, 594-639, 660-689
eureka/S3_data_reduction/niriss_profiles.py 25 16 36% 37-40, 56-66, 82-92, 109-116, 133-140
eureka/S3_data_reduction/nirspec.py 35 4 89% 47-50
eureka/S3_data_reduction/optspex.py 259 171 34% 29-76, 124-130, 148, 216-256, 284-329, 353-416, 478-488, 503-512, 520-528, 547, 550
eureka/S3_data_reduction/plots_s3.py 97 7 93% 39, 79, 111, 164-165, 173, 212
eureka/S3_data_reduction/s3_reduce.py 226 29 87% 47, 106, 112, 161-162, 177, 182, 196, 199, 235-238, 252, 289, 309, 324-328, 394, 402-416, 445
eureka/S3_data_reduction/sigrej.py 58 24 59% 124-125, 128, 152, 177, 181-198, 201, 205, 207, 209, 211, 215
eureka/S3_data_reduction/source_pos.py 44 12 73% 31, 37, 80, 112-127
eureka/S3_data_reduction/wfc3.py 277 38 86% 90, 95, 99-100, 134-146, 198, 205, 236-241, 273, 315-316, 325-327, 333, 346-347, 437-447
eureka/S4_generate_lightcurves/__init__.py 3 0 100%
eureka/S4_generate_lightcurves/drift.py 44 0 100%
eureka/S4_generate_lightcurves/plots_s4.py 74 5 93% 38, 60, 103, 134, 159
eureka/S4_generate_lightcurves/s4_genLC.py 177 14 92% 38, 74, 80-81, 132, 144-146, 239, 243-244, 252, 256, 276
eureka/S5_lightcurve_fitting/__init__.py 10 0 100%
eureka/S5_lightcurve_fitting/fitters.py 493 171 65% 59, 75-76, 78-79, 94-96, 98-102, 138-144, 202, 206, 218-220, 230-231, 275-277, 279-281, 310, 318-326, 348-403, 407-412, 435-437, 454-455, 460-462, 468, 472, 475-484, 525, 550-552, 594-596, 620, 634, 691-750, 816-821, 856-876, 879-897, 914
eureka/S5_lightcurve_fitting/lightcurve.py 86 12 86% 75, 86, 88, 92, 137-138, 141, 149, 180, 211, 217-219
eureka/S5_lightcurve_fitting/likelihood.py 92 27 71% 38-40, 45, 51, 90, 94, 137, 142, 145, 148, 178-189, 285, 310-313
eureka/S5_lightcurve_fitting/limb_darkening_fit.py 206 164 20% 61-62, 66-67, 71-72, 77-79, 83-84, 88-89, 93-94, 98-99, 104, 108-113, 118-119, 152-170, 196-205, 242-368, 381-411, 424-506
eureka/S5_lightcurve_fitting/modelgrid.py 267 237 11% 82-214, 225-249, 278-356, 382-430, 438-515, 542-598, 605-615, 621-626, 638-642
eureka/S5_lightcurve_fitting/models/BatmanModels.py 113 24 79% 5-6, 31, 47, 71-72, 81-82, 111, 128, 132-141, 149, 164-165, 174, 221-223
eureka/S5_lightcurve_fitting/models/ExpRampModel.py 35 3 91% 55-56, 62
eureka/S5_lightcurve_fitting/models/GPModel.py 117 103 12% 22-45, 60-74, 91-111, 124-140, 154-171, 183-198, 202-223, 227-233
eureka/S5_lightcurve_fitting/models/KeplerOrbit.py 220 178 19% 38, 48, 58, 68, 78, 88, 98, 125-152, 156-159, 163-166, 170-187, 197, 210, 223, 236, 250, 266-289, 303-310, 324-331, 347-371, 385, 400-405, 423-443, 456-461, 477-497, 512-515, 526-575
eureka/S5_lightcurve_fitting/models/Model.py 162 22 86% 33, 58, 81, 96, 134, 138, 163-164, 172, 181-182, 189, 211, 235, 258, 264, 284, 292, 301, 309, 316, 331
eureka/S5_lightcurve_fitting/models/PolynomialModel.py 38 1 97% 68
eureka/S5_lightcurve_fitting/models/SinusoidPhaseCurve.py 77 12 84% 4-5, 26, 40, 69, 94, 102-108, 115
eureka/S5_lightcurve_fitting/models/__init__.py 6 0 100%
eureka/S5_lightcurve_fitting/plots_s5.py 210 57 73% 40, 52, 89, 121, 155, 193, 272, 278, 308, 320, 341, 371-424
eureka/S5_lightcurve_fitting/s5_fit.py 223 21 91% 16, 59, 72, 118, 179-184, 220-221, 245-249, 289, 293, 301, 305, 325
eureka/S5_lightcurve_fitting/simulations.py 45 8 82% 10-11, 84-88, 93
eureka/S5_lightcurve_fitting/utils.py 269 207 23% 46-65, 80-145, 166, 169-179, 210-220, 236-244, 265-289, 309-322, 357-380, 401-419, 442-525, 545-567, 621-653, 680, 692-697
eureka/S6_planet_spectra/__init__.py 2 0 100%
eureka/S6_planet_spectra/plots_s6.py 49 10 80% 29-35, 44, 49, 68
eureka/S6_planet_spectra/s6_spectra.py 246 40 84% 20, 55, 106-107, 128, 132, 143, 156, 160, 164, 170-171, 174-191, 209, 230-231, 265, 273, 281, 290, 294, 307, 311-312, 316, 321, 343
eureka/__init__.py 18 3 83% 14-16
eureka/lib/__init__.py 16 0 100%
eureka/lib/astropytable.py 58 8 86% 39-40, 77-78, 117-118, 147-148
eureka/lib/centroid.py 33 13 61% 71-90, 136-137, 148-149
eureka/lib/clipping.py 51 30 41% 57, 62-65, 94-99, 106-109, 137-164
eureka/lib/disk.py 12 10 17% 84-101
eureka/lib/gaussian.py 175 114 35% 184-186, 190, 194, 199, 205, 280-319, 325-347, 561, 574-578, 588-591, 600-603, 615-616, 674-675, 677-678, 690, 705-741, 767-789, 793-801
eureka/lib/gelmanrubin.py 22 19 14% 30-53, 117-125
eureka/lib/logedit.py 22 4 82% 90-91, 123-124
eureka/lib/manageevent.py 47 26 45% 91-100, 104-106, 152-160, 195-204
eureka/lib/medstddev.py 45 41 9% 90-118, 144-159, 214-237
eureka/lib/plots.py 573 552 4% 7-35, 108-130, 134-182, 185-266, 270-309, 313-352, 356-426, 430-474, 478-502, 506-532, 536-598, 603-658, 662-722, 726-746, 750-770
eureka/lib/readECF.py 70 13 81% 50, 83-87, 111-117, 221-223
eureka/lib/readEPF.py 118 35 70% 43-47, 79, 103-116, 133, 168, 171-172, 204-208, 232-238, 260, 265, 290, 376-378
eureka/lib/smooth.py 33 17 48% 36-64, 72-73
eureka/lib/smoothing.py 17 14 18% 8-27
eureka/lib/sort_nicely.py 11 0 100%
eureka/lib/splinterp.py 5 0 100%
eureka/lib/suntimecorr.py 47 1 98% 274
eureka/lib/utc_tt.py 54 26 52% 20-46, 92
eureka/lib/util.py 87 6 93% 83-87, 126, 132-134
eureka/version.py 1 0 100%
setup.py 11 11 0% 2-20
tests/__init__.py 3 0 100%
tests/test_MIRI.py 67 7 90% 12-13, 23-27, 53
tests/test_NIRCam.py 50 2 96% 12-13
tests/test_NIRSpec.py 58 5 91% 12-13, 22-23, 48
tests/test_WFC3.py 22 0 100%
tests/test_general.py 30 0 100%
tests/test_lightcurve_fitting.py 150 6 96% 162-164, 206-208
-----------------------------------------------------------------------------------------
TOTAL 7842 3667 53%
While our test coverage is getting fairly high and we will know whether or not the code will crash for most use cases, we don't do any real testing to see whether we get the expected values (or array shapes, etc.) out of different functions. I'm thinking of tests like the test_b2f function in test_general.py. That is something we should do once we have done the easier task of increasing overall test coverage with end-to-end tests.