-
Notifications
You must be signed in to change notification settings - Fork 11
fix: update wavelengths #155
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
Changes from all commits
c5c2da9
703b16a
64e7c4d
89a907a
63df4ff
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
**Added:** | ||
|
||
* <news item> | ||
|
||
**Changed:** | ||
|
||
* Increased the number of significant figures for wavelength and separated values for Ka1 and Ka2. | ||
|
||
**Deprecated:** | ||
|
||
* <news item> | ||
|
||
**Removed:** | ||
|
||
* <news item> | ||
|
||
**Fixed:** | ||
|
||
* <news item> | ||
|
||
**Security:** | ||
|
||
* <news item> |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,7 +13,21 @@ | |
get_user_info, | ||
) | ||
|
||
WAVELENGTHS = {"Mo": 0.71073, "Ag": 0.59, "Cu": 1.5406} | ||
# Reference values are taken from | ||
# https://x-server.gmca.aps.anl.gov/cgi/www_dbli.exe?x0hdb=waves | ||
# Ka1Ka2 values are calculated as: (Ka1 * 2 + Ka2) / 3 | ||
# For CuKa1Ka2: (1.54056 * 2 + 1.544398) / 3 = 1.54184 | ||
WAVELENGTHS = { | ||
"Mo": 0.71073, | ||
"MoKa1": 0.70930, | ||
"MoKa1Ka2": 0.71073, | ||
"Ag": 0.56087, | ||
"AgKa1": 0.55941, | ||
"AgKa1Ka2": 0.56087, | ||
"Cu": 1.54184, | ||
"CuKa1": 1.54056, | ||
"CuKa1Ka2": 1.54184, | ||
} | ||
known_sources = [key for key in WAVELENGTHS.keys()] | ||
|
||
# Exclude wavelength from metadata to prevent duplication, | ||
|
@@ -166,28 +180,32 @@ def set_wavelength(args): | |
args : argparse.Namespace | ||
The updated arguments with the wavelength. | ||
""" | ||
if args.wavelength is not None and args.wavelength <= 0: | ||
raise ValueError( | ||
"No valid wavelength. " | ||
"Please rerun specifying a known anode_type " | ||
"or a positive wavelength." | ||
) | ||
if ( | ||
not args.wavelength | ||
and args.anode_type | ||
and args.anode_type not in WAVELENGTHS | ||
): | ||
raise ValueError( | ||
f"Anode type not recognized. " | ||
f"Please rerun specifying an anode_type from {*known_sources, }." | ||
if args.wavelength is None: | ||
sbillinge marked this conversation as resolved.
Show resolved
Hide resolved
|
||
matched_anode_type = next( | ||
( | ||
key | ||
for key in WAVELENGTHS | ||
if key.lower() == args.anode_type.lower() | ||
), | ||
None, | ||
) | ||
|
||
if args.wavelength: | ||
delattr(args, "anode_type") | ||
elif args.anode_type: | ||
if matched_anode_type is None: | ||
raise ValueError( | ||
f"Anode type not recognized. " | ||
f"Please rerun specifying an anode_type " | ||
f"from {*known_sources, }." | ||
) | ||
args.anode_type = matched_anode_type | ||
args.wavelength = WAVELENGTHS[args.anode_type] | ||
else: | ||
args.wavelength = WAVELENGTHS["Mo"] | ||
if args.wavelength <= 0: | ||
raise ValueError( | ||
"No valid wavelength. " | ||
"Please rerun specifying a known anode_type " | ||
"or a positive wavelength." | ||
) | ||
else: | ||
delattr(args, "anode_type") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. do I understand that if the user enters both a valid wavelength and an anode type we default to the wavelength? Is there a good use-case where this makes sense? Otherwise it looks to me like magic and we should just crash if the user provides both (i.e., I can see that they would do htat by mistake, I can't see that they would do that on purpose, though there may be a UC that you have in mind. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes so if the user enters only wavelength=0.25 and leaves the anode type empty, it will be automatically loaded as anode type = Mo, but that's wrong. Maybe we can add a check box somewhere to allow user to remove anode type (or automatically remove it when user enters a wavelength, which is kind of what we're doing now)? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I would throw an error if both are specified. Unless you can think of a case where the user would intentionally do that for some reason. |
||
return args | ||
|
||
|
||
|
Uh oh!
There was an error while loading. Please reload this page.