Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JP-3550: Multi-integration jump detection #242

Merged
merged 219 commits into from
Mar 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
219 commits
Select commit Hold shift + click to select a range
69341a0
Merge pull request #1 from spacetelescope/main
mwregan2 May 24, 2022
12282e7
Merge pull request #2 from spacetelescope/main
mwregan2 Jul 9, 2022
48c9ceb
Merge pull request #3 from spacetelescope/main
mwregan2 Aug 22, 2022
dbe7f18
Merge pull request #4 from spacetelescope/main
mwregan2 Nov 1, 2022
6cded7f
Merge branch 'spacetelescope:main' into main
mwregan2 Dec 20, 2022
93ee699
changes for charge spilling from saturated core
mwregan2 Dec 21, 2022
533ec24
Update jump.py
mwregan2 Dec 21, 2022
7d4f07e
Update jump.py
mwregan2 Dec 22, 2022
dc8f521
Update jump.py
mwregan2 Jan 3, 2023
7c064ce
Update saturation.py
mwregan2 Jan 3, 2023
f7880c6
Update saturation.py
mwregan2 Jan 4, 2023
7f04b48
use ellipses for all jumps
mwregan2 Jan 5, 2023
00c30a7
Update jump.py
mwregan2 Jan 5, 2023
14e3cf6
Update jump.py
mwregan2 Jan 5, 2023
44e1e07
Update jump.py
mwregan2 Jan 5, 2023
e3a1c74
Update jump.py
mwregan2 Jan 5, 2023
36e478a
Update jump.py
mwregan2 Jan 5, 2023
005a7e2
Update jump.py
mwregan2 Jan 5, 2023
7208ef5
Update jump.py
mwregan2 Jan 5, 2023
9821952
Update jump.py
mwregan2 Jan 5, 2023
e3a5f7f
Update jump.py
mwregan2 Jan 6, 2023
69d5a9a
Update jump.py
mwregan2 Jan 6, 2023
b7efb11
fix sat expand
mwregan2 Jan 6, 2023
8d65179
fix inside ellipse test
mwregan2 Jan 6, 2023
ca6df08
Update jump.py
mwregan2 Jan 6, 2023
c7f6c5f
Update jump.py
mwregan2 Jan 6, 2023
e907be0
Update jump.py
mwregan2 Jan 6, 2023
8852967
tests etc
mwregan2 Jan 11, 2023
6b4f6eb
return new dgq for sat expend
mwregan2 Jan 12, 2023
92801a4
fix super expanding ellipses
mwregan2 Jan 12, 2023
2b3b1de
Update jump.py
mwregan2 Jan 13, 2023
42350f2
Update jump.py
mwregan2 Jan 13, 2023
82f7034
wrong shape for edge
mwregan2 Jan 13, 2023
a9b0958
update edge parameter
mwregan2 Jan 13, 2023
1e7ae8e
remore print
mwregan2 Jan 18, 2023
f3cea06
Update saturation.py
mwregan2 Jan 18, 2023
312b21f
fix miri showers
mwregan2 Jan 18, 2023
e309f33
updates
mwregan2 Jan 20, 2023
ee0051b
Update twopoint_difference.py
mwregan2 Jan 20, 2023
8fcbb28
Update twopoint_difference.py
mwregan2 Jan 20, 2023
f4b995a
retro fit sigman_clip
mwregan2 Jan 20, 2023
3b06b54
Update twopoint_difference.py
mwregan2 Jan 20, 2023
9b14140
Update twopoint_difference.py
mwregan2 Jan 20, 2023
1c5708f
updates for test
mwregan2 Feb 6, 2023
8f23ecd
Update twopoint_difference.py
mwregan2 Feb 6, 2023
b931288
fix multint
mwregan2 Feb 6, 2023
f4e4cd2
tests
mwregan2 Feb 6, 2023
1c7c7d3
Update twopoint_difference.py
mwregan2 Feb 6, 2023
137d696
fixed axis=1 to axis=0,1
mwregan2 Feb 6, 2023
4f9dbc9
Update twopoint_difference.py
mwregan2 Feb 6, 2023
4c8091f
Update twopoint_difference.py
mwregan2 Feb 6, 2023
13f1e20
Update twopoint_difference.py
mwregan2 Feb 7, 2023
95d146d
fix flagging
mwregan2 Feb 7, 2023
279deda
Update jump.py
mwregan2 Feb 7, 2023
852951c
Update twopoint_difference.py
mwregan2 Feb 7, 2023
f2cb8e5
type problem
mwregan2 Feb 8, 2023
1f96708
Update twopoint_difference.py
mwregan2 Feb 8, 2023
41ef1e2
Update twopoint_difference.py
mwregan2 Feb 8, 2023
bd753ea
Update twopoint_difference.py
mwregan2 Feb 8, 2023
3cdb077
Update twopoint_difference.py
mwregan2 Feb 8, 2023
7f41e2a
Update twopoint_difference.py
mwregan2 Feb 8, 2023
664de35
Update twopoint_difference.py
mwregan2 Mar 27, 2023
e9af6c0
Update twopoint_difference.py
mwregan2 Mar 27, 2023
b8698fa
Update twopoint_difference.py
mwregan2 Mar 27, 2023
935dd25
Update twopoint_difference.py
mwregan2 Mar 27, 2023
fdd8179
Update twopoint_difference.py
mwregan2 Mar 27, 2023
fb8525f
Update twopoint_difference.py
mwregan2 Mar 28, 2023
d26b062
Update twopoint_difference.py
mwregan2 Mar 28, 2023
ab435de
Update twopoint_difference.py
mwregan2 Mar 28, 2023
63b1dca
Update twopoint_difference.py
mwregan2 Mar 28, 2023
64cdf59
Update twopoint_difference.py
mwregan2 Apr 13, 2023
9434171
Update twopoint_difference.py
mwregan2 Apr 13, 2023
8567dce
test sigma clip
mwregan2 Apr 13, 2023
2309e3e
Update twopoint_difference.py
mwregan2 Apr 13, 2023
0f74c80
Merge branch 'sigma_clip' of https://github.com/mwregan2/stcal into s…
mwregan2 Apr 13, 2023
019b2f2
Merge branch 'main' of https://github.com/mwregan2/stcal
mwregan2 Apr 14, 2023
c0df3af
Update jump.py
mwregan2 Apr 14, 2023
a7676fa
Update twopoint_difference.py
mwregan2 Apr 14, 2023
6b3717a
Update twopoint_difference.py
mwregan2 Apr 14, 2023
36355a2
add total CR count
mwregan2 Apr 24, 2023
8baf448
Update twopoint_difference.py
mwregan2 Apr 25, 2023
34b6b96
Update jump.py
mwregan2 Apr 25, 2023
e6bcb79
Update jump.py
mwregan2 Apr 25, 2023
bc4e660
Update twopoint_difference.py
mwregan2 Apr 25, 2023
80d1793
Update jump.py
mwregan2 Apr 25, 2023
1746a12
Update jump.py
mwregan2 Apr 27, 2023
da869b1
Update jump.py
mwregan2 Apr 27, 2023
a3ae84b
Update jump.py
mwregan2 Apr 27, 2023
9a5534f
Update jump.py
mwregan2 Apr 27, 2023
8e0af8d
Update twopoint_difference.py
mwregan2 Apr 27, 2023
0819973
Update jump.py
mwregan2 Apr 27, 2023
397fb4e
Update jump.py
mwregan2 Apr 27, 2023
9618b30
Update jump.py
mwregan2 Apr 27, 2023
1801be0
Update twopoint_difference.py
mwregan2 May 25, 2023
ad304ee
Update twopoint_difference.py
mwregan2 May 26, 2023
a72829c
tests
mwregan2 May 27, 2023
f01aac1
Update jump.py
mwregan2 May 27, 2023
efa23d8
lower sig clip thres
mwregan2 May 27, 2023
7710acd
Update twopoint_difference.py
mwregan2 May 27, 2023
09940cc
Merge branch 'main' of https://github.com/mwregan2/stcal
mwregan2 May 27, 2023
5691c17
Update twopoint_difference.py
mwregan2 May 27, 2023
2082498
Update jump.py
mwregan2 May 27, 2023
89d3cb4
Update twopoint_difference.py
mwregan2 May 27, 2023
d168a02
Update twopoint_difference.py
mwregan2 May 27, 2023
c2482e3
group diffs
mwregan2 May 30, 2023
15f36ef
Update jump.py
mwregan2 May 30, 2023
f22bc49
Update jump.py
mwregan2 May 30, 2023
2aa01ec
Update jump.py
mwregan2 May 30, 2023
742bac6
Update test_twopoint_difference.py
mwregan2 May 31, 2023
7a13b3f
Update twopoint_difference.py
mwregan2 May 31, 2023
8068445
updates
mwregan2 May 31, 2023
ce458f5
updates
mwregan2 May 31, 2023
b4d3ba0
new test
mwregan2 May 31, 2023
dce7285
Update twopoint_difference.py
mwregan2 May 31, 2023
138f592
Update jump.py
mwregan2 May 31, 2023
3bb29e6
Update jump.py
mwregan2 May 31, 2023
33305da
change to nints for min groups
mwregan2 Jun 1, 2023
0e3476e
Update test_twopoint_difference.py
mwregan2 Jun 1, 2023
02e648b
fixes
mwregan2 Jun 7, 2023
e5c98b6
Update twopoint_difference.py
mwregan2 Jun 7, 2023
ca559c0
Update twopoint_difference.py
mwregan2 Jun 8, 2023
a8a35bf
update
mwregan2 Jun 12, 2023
a35e370
Update twopoint_difference.py
mwregan2 Jun 12, 2023
e71554b
update
mwregan2 Jun 12, 2023
cb1c83d
Update twopoint_difference.py
mwregan2 Jun 12, 2023
f66a49f
Update twopoint_difference.py
mwregan2 Jun 12, 2023
318b691
update
mwregan2 Jun 13, 2023
77f82c3
Update twopoint_difference.py
mwregan2 Jun 13, 2023
8349949
cleanup
mwregan2 Jun 13, 2023
81e2562
Update jump.py
mwregan2 Jun 13, 2023
0054573
remove fits
mwregan2 Jun 14, 2023
c6ad3a7
add stddev output
mwregan2 Jun 14, 2023
a70b7f6
updates
mwregan2 Jun 14, 2023
857a11b
test updates
mwregan2 Jun 14, 2023
f12c6d5
Merge branch 'main' of https://github.com/mwregan2/stcal
mwregan2 Jun 15, 2023
90e0612
Reduce log output
mwregan2 Jun 15, 2023
146798d
Update twopoint_difference.py
mwregan2 Jun 15, 2023
3f712da
Update twopoint_difference.py
mwregan2 Jun 15, 2023
e14eb59
Update twopoint_difference.py
mwregan2 Jun 15, 2023
1204c56
Update twopoint_difference.py
mwregan2 Jun 15, 2023
f5e5a0b
Update twopoint_difference.py
mwregan2 Jun 15, 2023
7522f41
Update jump.py
mwregan2 Jun 15, 2023
ed147f6
Update test_twopoint_difference.py
mwregan2 Jun 15, 2023
db5b29e
Add sigma clip to shower detection
mwregan2 Jun 16, 2023
eebbacf
remove or mark as skip extraneous tests
mwregan2 Jun 16, 2023
3ee10c9
remove ds_store
mwregan2 Jun 16, 2023
becb00e
remove DS_Store
mwregan2 Jun 16, 2023
76341c0
Delete .DS_Store
mwregan2 Jun 16, 2023
456bd7d
Delete .DS_Store
mwregan2 Jun 16, 2023
133d360
Update CHANGES.rst
mwregan2 Jun 16, 2023
4088dff
unpacked the use of shape to be named variables
mwregan2 Jun 16, 2023
4c19995
replacing shape with meaningful variable names
mwregan2 Jun 16, 2023
13819d2
fix style issues
mwregan2 Jun 20, 2023
3a8c2ac
Update test_twopoint_difference.py
mwregan2 Jun 20, 2023
6687594
Merge branch 'main' into sigma_clip
hbushouse Jun 21, 2023
9b4c8f5
Delete setup.cfg
hbushouse Jun 21, 2023
c0b33bf
Fix missing loop in flag 4 neighbors
mwregan2 Jun 22, 2023
8b6c993
Merge branch 'sigma_clip' of https://github.com/mwregan2/stcal into s…
mwregan2 Jun 22, 2023
a866d4c
Update twopoint_difference.py
mwregan2 Jun 23, 2023
9ff9993
Update CHANGES.rst
hbushouse Jun 23, 2023
e2a2aa5
Update CHANGES.rst
hbushouse Jun 23, 2023
4ed2e90
Update src/stcal/jump/jump.py
hbushouse Jun 23, 2023
f6a1ac5
Update src/stcal/jump/jump.py
hbushouse Jun 23, 2023
6e15cf7
Merge branch 'main' into sigma_clip
hbushouse Jun 23, 2023
259a2af
Update twopoint_difference.py
mwregan2 Jun 27, 2023
59236eb
Merge branch 'spacetelescope:main' into main
mwregan2 Jun 28, 2023
9ec97c8
Merge branch 'spacetelescope:main' into main
mwregan2 Jul 5, 2023
8d71315
Update twopoint_difference.py
mwregan2 Jul 10, 2023
5b8696b
Merge branch 'main' of https://github.com/mwregan2/stcal
mwregan2 Sep 6, 2023
6202dd8
Merge branch 'main' of https://github.com/mwregan2/stcal
mwregan2 Oct 23, 2023
d2fa8d7
Update twopoint_difference.py
mwregan2 Dec 13, 2023
75e1efa
Merge branch 'main' of https://github.com/mwregan2/stcal
mwregan2 Dec 14, 2023
95059c6
updates
mwregan2 Jan 3, 2024
55f8cfd
Update twopoint_difference.py
mwregan2 Feb 9, 2024
4d09518
updates
mwregan2 Feb 9, 2024
2393563
update tests
mwregan2 Feb 9, 2024
3be5bd3
updates
mwregan2 Feb 9, 2024
cd6c31c
Update twopoint_difference.py
mwregan2 Feb 12, 2024
d00246b
updates
mwregan2 Feb 12, 2024
68dc2d2
update
mwregan2 Feb 13, 2024
d1deff6
Update twopoint_difference.py
mwregan2 Feb 14, 2024
5b8394b
Update twopoint_difference.py
mwregan2 Feb 14, 2024
c13e878
updates
mwregan2 Feb 15, 2024
8b75d6d
resolve conflict
mwregan2 Feb 16, 2024
8438b67
conflicts
mwregan2 Feb 16, 2024
b49adf0
Update twopoint_difference.py
mwregan2 Feb 19, 2024
45964e2
Update jump.py
mwregan2 Feb 19, 2024
2076833
Update jump.py
mwregan2 Feb 19, 2024
dce95fc
fix clipping
mwregan2 Feb 19, 2024
0e99f40
Update twopoint_difference.py
mwregan2 Feb 19, 2024
27a4b49
new output
mwregan2 Feb 19, 2024
1a2f5db
unit test updates
mwregan2 Feb 20, 2024
798c864
Update test_twopoint_difference.py
mwregan2 Feb 21, 2024
9fd8628
Cleanup
mwregan2 Feb 21, 2024
0139f91
Update test_twopoint_difference.py
mwregan2 Feb 21, 2024
96bc9e2
Update CHANGES.rst
mwregan2 Feb 21, 2024
c892def
Update CHANGES.rst
mwregan2 Feb 21, 2024
ef259a5
Merge branch 'main' into multi_int_jump_detection
mwregan2 Feb 21, 2024
0252169
update variable name and parameter docs
mwregan2 Feb 22, 2024
b5d885e
Merge branch 'multi_int_jump_detection' of https://github.com/mwregan…
mwregan2 Feb 22, 2024
3f383fc
Update .gitignore
mwregan2 Feb 26, 2024
c6762f6
Update twopoint_difference.py
mwregan2 Feb 26, 2024
5df2397
Update twopoint_difference.py
mwregan2 Feb 26, 2024
d2f98de
Update test_twopoint_difference.py
mwregan2 Feb 26, 2024
32341a4
clean up flag after
mwregan2 Feb 26, 2024
289c3fa
Update test_twopoint_difference.py
mwregan2 Feb 26, 2024
a0783a9
fix merge problems
mwregan2 Feb 26, 2024
d292bb5
Update jump.py
mwregan2 Feb 27, 2024
cf098f5
add test from JWST
mwregan2 Feb 28, 2024
0e94cb8
change threshold flagging back to scalar
mwregan2 Feb 28, 2024
6c105d7
make sure copies are made of model attributes
mwregan2 Feb 28, 2024
54a1240
Update test_jump.py
mwregan2 Mar 1, 2024
9dcfe18
Update test_jump.py
mwregan2 Mar 1, 2024
9518003
Update test_twopoint_difference.py
mwregan2 Mar 1, 2024
32687ff
Update test_twopoint_difference.py
mwregan2 Mar 1, 2024
57a76e7
Merge branch 'spacetelescope:main' into multi_int_jump_detection
mwregan2 Mar 1, 2024
5274459
Update CHANGES.rst
hbushouse Mar 18, 2024
d31887d
Merge branch 'main' into multi_int_jump_detection
hbushouse Mar 18, 2024
4b3de4b
addressed PR comments
mwregan2 Mar 19, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,14 @@ Bug Fixes
Other
-----

jump
~~~~

- Enable the use of multiple integrations to find outliers. Also,
when the number of groups is above a threshold, use single pass
outlier flagging rather than the iterative flagging. [#242]


1.6.1 (2024-02-29)
==================

Expand Down
55 changes: 35 additions & 20 deletions src/stcal/jump/jump.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import logging
import multiprocessing
import time

import numpy as np
import cv2 as cv
import astropy.stats as stats

from astropy.convolution import Ring2DKernel
from astropy.convolution import convolve


from . import constants
from . import twopoint_difference as twopt

Expand All @@ -18,10 +18,10 @@

def detect_jumps(
frames_per_group,
data,
indata,
gdq,
pdq,
err,
inerr,
gain_2d,
readnoise_2d,
rejection_thresh,
Expand Down Expand Up @@ -56,6 +56,7 @@ def detect_jumps(
minimum_groups=3,
minimum_sigclip_groups=100,
only_use_ints=True,
min_diffs_single_pass=10,
mask_persist_grps_next_int=True,
persist_grps_flagged=25,
):
Expand All @@ -81,7 +82,7 @@ def detect_jumps(
frames_per_group : int
number of frames per group

data : float, 4D array
indata : float, 4D array
science array

gdq : int, 4D array
Expand All @@ -90,7 +91,7 @@ def detect_jumps(
pdq : int, 2D array
pixelg dq array

err : float, 4D array
inerr : float, 4D array
error array

gain_2d : float, 2D array
Expand All @@ -109,7 +110,7 @@ def detect_jumps(
four_grp_thresh : float
cosmic ray sigma rejection threshold for ramps having 4 groups

max_cores: str
max_cores : str
Maximum number of cores to use for multiprocessing. Available choices
are 'none' (which will create one process), 'quarter', 'half', 'all'
(of available cpu cores).
Expand All @@ -124,11 +125,11 @@ def detect_jumps(
neighbors (marginal detections). Any primary jump below this value will
not have its neighbors flagged.

flag_4_neighbors: bool
flag_4_neighbors : bool
if set to True (default is True), it will cause the four perpendicular
neighbors of all detected jumps to also be flagged as a jump.

dqflags: dict
dqflags : dict
A dictionary with at least the following keywords:
DO_NOT_USE, SATURATED, JUMP_DET, NO_GAIN_VALUE, GOOD

Expand Down Expand Up @@ -209,6 +210,15 @@ def detect_jumps(
min_sat_radius_extend : float
The minimum radius of the saturated core of a snowball for the core to
be extended
minimum_groups : int
The minimum number of groups for jump detection
minimum_sigclip_groups : int
The minimum number of groups required to use sigma clipping to find outliers.
only_use_ints : boolean
In sigma clipping, if True only differences between integrations are compared. If False,
then all differences are processed at once.
min_diffs_single_pass : int
The minimum number of groups to switch to flagging all outliers in a single pass.

Returns
-------
Expand All @@ -235,13 +245,12 @@ def detect_jumps(

# Apply gain to the SCI, ERR, and readnoise arrays so they're in units
# of electrons
data *= gain_2d
err *= gain_2d
data = indata * gain_2d
err = inerr * gain_2d
readnoise_2d *= gain_2d
# also apply to the after_jump thresholds
after_jump_flag_e1 = after_jump_flag_dn1 * np.nanmedian(gain_2d)
after_jump_flag_e2 = after_jump_flag_dn2 * np.nanmedian(gain_2d)

# Apply the 2-point difference method as a first pass
log.info("Executing two-point difference method")
start = time.time()
Expand Down Expand Up @@ -280,6 +289,7 @@ def detect_jumps(
minimum_groups=3,
minimum_sigclip_groups=minimum_sigclip_groups,
only_use_ints=only_use_ints,
min_diffs_single_pass=min_diffs_single_pass,
)
# remove redundant bits in pixels that have jump flagged but were
# already flagged as do_not_use or saturated.
Expand Down Expand Up @@ -362,6 +372,7 @@ def detect_jumps(
minimum_groups,
minimum_sigclip_groups,
only_use_ints,
min_diffs_single_pass,
),
)

Expand All @@ -388,6 +399,7 @@ def detect_jumps(
minimum_groups,
minimum_sigclip_groups,
only_use_ints,
min_diffs_single_pass,
),
)
log.info("Creating %d processes for jump detection ", n_slices)
Expand Down Expand Up @@ -560,7 +572,7 @@ def flag_large_events(
Nothing, gdq array is modified.

"""
log.info("Flagging large Snowballs")
log.info("Flagging Snowballs")

n_showers_grp = []
total_snowballs = 0
Expand Down Expand Up @@ -745,10 +757,10 @@ def find_last_grp(grp, ngrps, num_grps_masked):
----------
grp : int
The location of the shower

ngrps : int
The number of groups in the integration

num_grps_masked : int
The requested number of groups to be flagged after the shower

Expand Down Expand Up @@ -895,21 +907,24 @@ def find_faint_extended(
emission.
min_shower_area : int
The minimum area for a group of pixels to be flagged as a shower.
inner: int
inner : int
The inner radius of the ring_2D_kernal used for the convolution.
outer : int
The outer radius of the ring_2D_kernal used for the convolution.
sat_flag : int
The integer value of the saturation flag.
jump_flag : int
The integer value of the jump flag
ellipse_expand: float
ellipse_expand : float
The relative increase in the size of the fitted ellipse to be
applied to the shower.
num_grps_masked: int
The number of groups after the detected shower to be flagged as jump.
max_extended_radius: int
The upper limit for the extension of saturation and jump
num_grps_masked : int
The number of groups after the detected shower to be flagged as jump.
max_extended_radius : int
The upper limit for the extension of saturation and jump
minimum_sigclip_groups : int
The minimum number of groups to use sigma clipping.


Returns
-------
Expand Down
Loading
Loading