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

Composite Z bugs (issue and fix) #1559

Open
dopplerchase opened this issue Apr 12, 2024 · 8 comments · May be fixed by #1562
Open

Composite Z bugs (issue and fix) #1559

dopplerchase opened this issue Apr 12, 2024 · 8 comments · May be fixed by #1562

Comments

@dopplerchase
Copy link
Contributor

dopplerchase commented Apr 12, 2024

In my original composite reflectivity code, I neglected that different sweeps can have different PRFs, which change the sensitivity and range. This created some odd artifacts like here:

image

To get around this, I have adjusted the composite reflectivity code to include a quick np.where call to find all the sweeps with the same nyquist as the lowest sweep. This gets rid of the hard artifacts:

image

I have added a bool flag to turn this on/off (not sure why someone would want to turn this off, but its there if people do).

I would guess in the future i should build it so you can select the specific nyquist, but for now this fix works.

@dopplerchase
Copy link
Contributor Author

I have the code into the codebase locally, but need to run. I will try to get this pushed up next week.

@dopplerchase dopplerchase linked a pull request Apr 15, 2024 that will close this issue
1 task
@dopplerchase
Copy link
Contributor Author

Do we know if the get_nyquist func works for all radars? @mgrover1

@dopplershift
Copy link

dopplershift commented Apr 15, 2024

I feel like dropping ALL tilts that don't match the lowest Nyquist is going to be pretty hit or miss and affect vertical extent. For instance, this is for KFCX 2024-04-15 20:32Z (tilt num, angle, Nyquist):

VCP: 212
1 0.53 8.51
2 0.53 31.3
3 0.93 8.51
4 0.92 31.3
5 1.38 9.25
6 1.36 31.3
7 0.52 8.51
8 0.53 31.3
9 1.82 31.3
10 2.43 31.3
11 3.10 31.3
12 3.99 31.3
13 5.10 31.3
14 6.41 31.3

@scollis
Copy link
Member

scollis commented Apr 15, 2024 via email

@dopplerchase
Copy link
Contributor Author

@dopplershift I agree, its a bit strong. But clearly from this case, things are getting weird in that doppler scan.

Should the default have the same_nyquist=False then if folks notice weird artifacts they have the power to turn it off?

Or should we apply some default gatefilter that cleans up the ugly data?

@dopplershift
Copy link

I'm curious to look at the sweeps and see just what's going on there...

@dopplershift
Copy link

Ok, so it looks like the SZ-2 phase coding for the range ambiguity resolution on the velocity cuts results in some kind of power bias. I'm rusty on my phase coding, but I don't remember that being a problem, but, it's clearly there, whatever.

The problem with your approach is that, for instance on this volume, it's only going to use the 0.5 and 0.9 cuts, nothing else:

1: 0.53 8.4
2: 0.53 30.92
3: 0.88 8.4
4: 0.88 30.92
5: 1.27 9.14
6: 1.32 30.92
7: 1.80 30.92
8: 2.42 30.92
9: 3.12 30.92
10: 0.53 8.4
11: 0.53 30.92
12: 3.96 30.92
13: 5.05 30.92
14: 6.37 30.92
15: 7.95 28.64
16: 9.98 30.92
17: 12.37 33.56
18: 15.47 33.56
19: 19.34 33.56

To me that's not a great composite Z product. There's also a general "issue" that needs to be dealt with (not sure if it is here) where SAILS can put another 0.5 cut in the volume--not sure whether that should be included.

Options I can think of:

  • Look at the VCP information in the file and ignore sweeps that come from the "Doppler" sweeps on the SZ-2 phase coded split cuts
  • Use some smart thresholding to only include a single sweep at a particular elevation angle from a volume, picking the lowest Nyquist to keep.
  • Just live with the suboptimal behavior with the flag turned on.

@mgrover1
Copy link
Collaborator

@dopplerchase - if the nyquist velocity is in the instrument parameters, it will work! The method is implemented at the Radar object level, so it will across the readers.

def get_nyquist_vel(self, sweep, check_uniform=True):

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants