Bugfix: print information

This commit is contained in:
Lukas Klass 2020-05-19 10:34:10 +02:00
parent 970cdd543b
commit a2fbbfc49d
2 changed files with 48 additions and 23 deletions

View File

@ -113,11 +113,15 @@ class Imager(ASensor):
getLogger("root").info("Calculating the SNR...", extra={"user_waiting": True})
snr = signal_current.sum() * exp_time / np.sqrt(
(signal_current + background_current + dark_current).sum() * exp_time + (read_noise ** 2).sum())
pbar = enlighten.get_manager().counter(**dict(total=len(exp_time), desc='SNR', unit='configurations'))
for exp_time_ in pbar(exp_time):
# Print information
self.__printDetails(signal_current * exp_time_, background_current * exp_time_, read_noise,
dark_current * exp_time_, "t_exp=%.2f s: " % exp_time_.value)
# Print information
if exp_time.size > 1:
pbar = enlighten.get_manager().counter(**dict(total=len(exp_time), desc='SNR', unit='configurations'))
for exp_time_ in pbar(exp_time):
self.__printDetails(signal_current * exp_time_, background_current * exp_time_, read_noise,
dark_current * exp_time_, "t_exp=%.2f s: " % exp_time_.value)
else:
self.__printDetails(signal_current * exp_time, background_current * exp_time, read_noise,
dark_current * exp_time, "t_exp=%.2f s: " % exp_time.value)
# Return the value of the SNR, ignoring the physical units (electrons^0.5)
return snr.value * u.dimensionless_unscaled
@ -152,11 +156,16 @@ class Imager(ASensor):
exp_time = snr ** 2 * (
1 + current_ratio + np.sqrt((1 + current_ratio) ** 2 + 4 * read_noise_tot ** 2 / snr ** 2)) / (
2 * signal_current_tot)
pbar = enlighten.get_manager().counter(**dict(total=len(exp_time), desc='Exposure Time', unit='configurations'))
for snr_, exp_time_ in pbar(zip(snr, exp_time)):
# Print information
self.__printDetails(signal_current * exp_time_, background_current * exp_time_, read_noise,
dark_current * exp_time_, "SNR=%.2f: " % snr_.value)
# Print information
if exp_time.size > 1:
pbar = enlighten.get_manager().counter(**dict(total=len(exp_time), desc='Exposure Time',
unit='configurations'))
for snr_, exp_time_ in pbar(zip(snr, exp_time)):
self.__printDetails(signal_current * exp_time_, background_current * exp_time_, read_noise,
dark_current * exp_time_, "SNR=%.2f: " % snr_.value)
else:
self.__printDetails(signal_current * exp_time, background_current * exp_time, read_noise,
dark_current * exp_time, "SNR=%.2f: " % snr.value)
return exp_time
@u.quantity_input(exp_time="time", snr=u.dimensionless_unscaled, target_brightness=u.mag)
@ -185,12 +194,18 @@ class Imager(ASensor):
signal_current_lim = snr * (snr + np.sqrt(
snr ** 2 + 4 * (exp_time * (background_current.sum() + dark_current.sum()) +
(read_noise ** 2).sum()))) / (2 * exp_time)
pbar = enlighten.get_manager().counter(**dict(total=len(exp_time), desc='Sensitivity', unit='configurations'))
for snr_, exp_time_, signal_current_lim_ in pbar(zip(snr, exp_time, signal_current_lim)):
# Print information
self.__printDetails(signal_current_lim_ * exp_time_, background_current * exp_time_, read_noise,
dark_current * exp_time_,
"SNR=%.2f t_exp=%.2f s: " % (snr_.value, exp_time_.value))
# Print information
if exp_time.size > 1:
pbar = enlighten.get_manager().counter(**dict(total=len(exp_time), desc='Sensitivity',
unit='configurations'))
for snr_, exp_time_, signal_current_lim_ in pbar(zip(snr, exp_time, signal_current_lim)):
self.__printDetails(signal_current_lim_ * exp_time_, background_current * exp_time_, read_noise,
dark_current * exp_time_,
"SNR=%.2f t_exp=%.2f s: " % (snr_.value, exp_time_.value))
else:
self.__printDetails(signal_current_lim * exp_time, background_current * exp_time, read_noise,
dark_current * exp_time,
"SNR=%.2f t_exp=%.2f s: " % (snr.value, exp_time.value))
return target_brightness - 2.5 * np.log10(signal_current_lim / signal_current.sum()) * u.mag
@u.quantity_input(signal=u.electron, background=u.electron, read_noise=u.electron ** 0.5, dark=u.electron)

View File

@ -22,8 +22,11 @@ def printSNR(exp_time: u.Quantity, snr: u.Quantity):
table.add_column("#", style="dim", width=4, justify="center")
table.add_column("Exposure Time", justify="right")
table.add_column("SNR", justify="right")
for i, exp_time_, snr_ in zip(range(len(exp_time)), exp_time.value, snr.value):
table.add_row(str(i), ("%1.4e " + exp_time.unit.to_string()) % exp_time_, "%1.4e" % snr_)
if exp_time.size > 1:
for i, exp_time_, snr_ in zip(range(len(exp_time)), exp_time.value, snr.value):
table.add_row(str(i), ("%1.4e " + exp_time.unit.to_string()) % exp_time_, "%1.4e" % snr_)
else:
table.add_row("1", ("%1.4e " + exp_time.unit.to_string()) % exp_time.value, "%1.4e" % snr.value)
console = Console()
console.print(table)
@ -47,8 +50,11 @@ def printExposureTime(exp_time: u.Quantity, snr: u.Quantity):
table.add_column("#", style="dim", width=4, justify="center")
table.add_column("SNR", justify="right")
table.add_column("Exposure Time", justify="right")
for i, exp_time_, snr_ in zip(range(len(exp_time)), exp_time.value, snr.value):
table.add_row(str(i), "%1.4e" % snr_, ("%1.4e " + exp_time.unit.to_string()) % exp_time_)
if exp_time.size > 1:
for i, exp_time_, snr_ in zip(range(len(exp_time)), exp_time.value, snr.value):
table.add_row(str(i), "%1.4e" % snr_, ("%1.4e " + exp_time.unit.to_string()) % exp_time_)
else:
table.add_row("1", "%1.4e" % snr.value, ("%1.4e " + exp_time.unit.to_string()) % exp_time.value)
console = Console()
console.print(table)
@ -75,8 +81,12 @@ def printSensitivity(exp_time: u.Quantity, snr: u.Quantity, sensitivity: u.Quant
table.add_column("Exposure Time", justify="right")
table.add_column("SNR", justify="right")
table.add_column("Sensitivity", justify="right")
for i, exp_time_, snr_, sensitivity_ in zip(range(len(exp_time)), exp_time.value, snr.value, sensitivity.value):
table.add_row(str(i), ("%1.4e " + exp_time.unit.to_string()) % exp_time_, "%1.4e" % snr_,
("%1.4e " + sensitivity.unit.to_string()) % sensitivity_)
if exp_time.size > 1:
for i, exp_time_, snr_, sensitivity_ in zip(range(len(exp_time)), exp_time.value, snr.value, sensitivity.value):
table.add_row(str(i), ("%1.4e " + exp_time.unit.to_string()) % exp_time_, "%1.4e" % snr_,
("%1.4e " + sensitivity.unit.to_string()) % sensitivity_)
else:
table.add_row("1", ("%1.4e " + exp_time.unit.to_string()) % exp_time.value, "%1.4e" % snr.value,
("%1.4e " + sensitivity.unit.to_string()) % sensitivity.value)
console = Console()
console.print(table)