Skip to content

Commit 20d6076

Browse files
committed
Merge branch 'main' into ExperimentWithSharpening
2 parents 11185ed + 953b724 commit 20d6076

8 files changed

Lines changed: 118 additions & 52 deletions

File tree

docker/env_template

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@
55
TZ=America/New_York
66

77
INDIALLSKY_INDI_CCD_DRIVER=indi_simulator_ccd
8+
#INDIALLSKY_INDI_CCD_DRIVER=indi_asi_ccd
9+
#INDIALLSKY_INDI_CCD_DRIVER=indi_toupcam_ccd
10+
#INDIALLSKY_INDI_CCD_DRIVER=indi_altaircam_ccd
11+
#INDIALLSKY_INDI_CCD_DRIVER=indi_ogmacam_ccd_ccd
12+
#INDIALLSKY_INDI_CCD_DRIVER=indi_omegonprocam_ccd
13+
#INDIALLSKY_INDI_CCD_DRIVER=indi_playerone_ccd
814
INDIALLSKY_INDI_GPS_DRIVER=
915

1016
# This folder needs to be shared to the capture, gunicorn, and nginx containers

indi_allsky/flask/forms.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,17 @@ def CCD_EXPOSURE_validator(form, field):
208208
raise ValidationError('Default Exposure cannot be more than 120')
209209

210210

211+
def CAMERA_SQM__EXPOSURE_validator(form, field):
212+
if not isinstance(field.data, (int, float)):
213+
raise ValidationError('Please enter valid number')
214+
215+
if field.data < 1.0:
216+
raise ValidationError('SQM Exposure must be 1.0 or greater')
217+
218+
if field.data > 60.0:
219+
raise ValidationError('SQM Exposure must be 60.0 or less')
220+
221+
211222
def CCD_EXPOSURE_TIMEOUT_validator(form, field):
212223
if not isinstance(field.data, int):
213224
raise ValidationError('Please enter valid number')
@@ -4280,7 +4291,7 @@ class IndiAllskyConfigForm(FlaskForm):
42804291
EXPOSURE_PERIOD_DAY = FloatField('Exposure Period (Day)', validators=[DataRequired(), EXPOSURE_PERIOD_DAY_validator])
42814292
CAMERA_SQM__ENABLE = BooleanField('Enable Camera SQM')
42824293
CAMERA_SQM__ENABLE_DAY = BooleanField('Enable Daytime SQM')
4283-
CAMERA_SQM__EXPOSURE = FloatField('Camera SQM Exposure', validators=[DataRequired(), CCD_EXPOSURE_validator])
4294+
CAMERA_SQM__EXPOSURE = FloatField('Camera SQM Exposure', validators=[DataRequired(), CAMERA_SQM__EXPOSURE_validator])
42844295
CAMERA_SQM__GAIN = FloatField('Camera SQM Gain', validators=[CCD_GAIN_validator])
42854296
CAMERA_SQM__BINNING = IntegerField('Camera SQM Binning', validators=[CCD_BINNING_validator])
42864297
CAMERA_SQM__EXPOSURE_PERIOD = IntegerField('SQM Exposure Period', validators=[DataRequired(), CAMERA_SQM__EXPOSURE_PERIOD_validator])

indi_allsky/flask/templates/adu.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ <h4>Image stats in 15 minute blocks</h4>
3030
<th>Count</th>
3131
<th>Exposure Avg</th>
3232
<th>ADU Avg</th>
33-
<th>SQM Avg</th>
33+
<th>jSQM Avg</th>
3434
<th>Stars Avg</th>
3535
</tr>
3636
</thead>
@@ -41,7 +41,7 @@ <h4>Image stats in 15 minute blocks</h4>
4141
<td>{{ row.i_count }}
4242
<td>{{ "%0.4f"|format(row.exposure_avg) }}
4343
<td>{{ "%0.2f"|format(row.adu_avg) }}
44-
<td>{{ "%0.2f"|format(row.sqm_avg) }}
44+
<td>{{ "%0.2f"|format(row.jsqm_avg) }}
4545
<td>{{ "%0.1f"|format(row.stars_avg) }}
4646
</tr>
4747
{% endfor %}

indi_allsky/flask/templates/chart.html

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@
3737
var history_seconds; // set later
3838
var json_data = {
3939
'chart_data' : {
40-
'sqm' : [],
41-
'sqm_d' : [],
40+
'jsqm' : [],
41+
'jsqm_d': [],
4242
'stars' : [],
4343
'temp' : [],
4444
'exp' : [],
@@ -70,8 +70,8 @@
7070
$('#chart_note').css({'display' : 'none'});
7171
}, 10000);
7272

73-
ctx_sqm = $('#sqm-chart')[0].getContext('2d');
74-
sqm_chart = new Chart(ctx_sqm, {
73+
ctx_jsqm = $('#jsqm-chart')[0].getContext('2d');
74+
jsqm_chart = new Chart(ctx_jsqm, {
7575
type: "line",
7676
data: {
7777
datasets: [{
@@ -116,12 +116,12 @@
116116
});
117117

118118

119-
ctx_sqm_d = $('#sqm_d-chart')[0].getContext('2d');
120-
sqm_d_chart = new Chart(ctx_sqm_d, {
119+
ctx_jsqm_d = $('#jsqm_d-chart')[0].getContext('2d');
120+
jsqm_d_chart = new Chart(ctx_jsqm_d, {
121121
type: "bar",
122122
data: {
123123
datasets: [{
124-
label: 'SQM delta',
124+
label: 'jSQM delta',
125125
backgroundColor: "rgba(128, 0, 0, 1)",
126126
//borderColor: "rgba(92, 0, 0, 1)",
127127
tension: 0.1,
@@ -857,8 +857,8 @@
857857

858858

859859
function drawChart() {
860-
sqm_chart.data.datasets[0].data = json_data['chart_data']['sqm'];
861-
sqm_d_chart.data.datasets[0].data = json_data['chart_data']['sqm_d'];
860+
jsqm_chart.data.datasets[0].data = json_data['chart_data']['jsqm'];
861+
jsqm_d_chart.data.datasets[0].data = json_data['chart_data']['jsqm_d'];
862862
stars_chart.data.datasets[0].data = json_data['chart_data']['stars'];
863863
temp_chart.data.datasets[0].data = json_data['chart_data']['temp'];
864864
exposure_chart.data.datasets[0].data = json_data['chart_data']['exp'];
@@ -878,8 +878,8 @@
878878
histogram_chart.data.datasets[2].data = json_data['chart_data']['histogram']['blue'];
879879
histogram_chart.data.datasets[3].data = json_data['chart_data']['histogram']['gray'];
880880

881-
sqm_chart.update();
882-
sqm_d_chart.update();
881+
jsqm_chart.update();
882+
jsqm_d_chart.update();
883883
stars_chart.update();
884884
temp_chart.update();
885885
exposure_chart.update();
@@ -984,41 +984,41 @@
984984
<div class="row">
985985
<div class="col-sm-6">
986986
<div class="bg-dark" style="margin:3px">
987-
<canvas id="sqm-chart"></canvas>
987+
<canvas id="exposure-chart"></canvas>
988988
</div>
989989
</div>
990990

991991
<div class="col-sm-6">
992992
<div class="bg-dark" style="margin:3px">
993-
<canvas id="sqm_d-chart"></canvas>
993+
<canvas id="stars-chart"></canvas>
994994
</div>
995995
</div>
996996
</div>
997997

998998
<div class="row">
999999
<div class="col-sm-6">
10001000
<div class="bg-dark" style="margin:3px">
1001-
<canvas id="stars-chart"></canvas>
1001+
<canvas id="temp-chart"></canvas>
10021002
</div>
10031003
</div>
10041004

10051005
<div class="col-sm-6">
10061006
<div class="bg-dark" style="margin:3px">
1007-
<canvas id="exposure-chart"></canvas>
1007+
<canvas id="detection-chart"></canvas>
10081008
</div>
10091009
</div>
10101010
</div>
10111011

10121012
<div class="row">
10131013
<div class="col-sm-6">
10141014
<div class="bg-dark" style="margin:3px">
1015-
<canvas id="temp-chart"></canvas>
1015+
<canvas id="jsqm-chart"></canvas>
10161016
</div>
10171017
</div>
10181018

10191019
<div class="col-sm-6">
10201020
<div class="bg-dark" style="margin:3px">
1021-
<canvas id="detection-chart"></canvas>
1021+
<canvas id="jsqm_d-chart"></canvas>
10221022
</div>
10231023
</div>
10241024
</div>

indi_allsky/flask/templates/sqm.html

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
var img;
1515
var json_data = {
1616
'image_list' : [],
17-
'sqm_data' : {'min' : 0, 'max' : 0, 'avg' : 0, 'last' : 0},
17+
'jsqm_data' : {'min' : 0, 'max' : 0, 'avg' : 0, 'last' : 0},
1818
'stars_data' : {'min' : 0, 'max' : 0, 'avg' : 0, 'last' : 0},
1919
'camera_sqm_mag_data' : {'min' : 0, 'max' : 0, 'avg' : 0, 'last' : 0},
2020
'camera_sqm_adu_data' : {'min' : 0, 'max' : 0, 'avg' : 0, 'last' : 0},
@@ -86,11 +86,11 @@
8686
if (json_data['image_list'][0]["detections"] > 0) {
8787
context.font = '20px serif';
8888

89-
var sqm_text = "*** Detection ***";
89+
var detect_text = "*** Detection ***";
9090
context.strokeStyle = 'black';
91-
context.strokeText(sqm_text, x_right - 110, y_bottom - 40, maxWidth);
91+
context.strokeText(detect_text, x_right - 110, y_bottom - 40, maxWidth);
9292
context.fillStyle = 'lightgrey';
93-
context.fillText(sqm_text, x_right - 110, y_bottom - 40, maxWidth);
93+
context.fillText(detect_text, x_right - 110, y_bottom - 40, maxWidth);
9494
}
9595

9696

@@ -170,33 +170,33 @@
170170
// SQM
171171
context.font = '32px serif';
172172

173-
var sqm_text = "jSQM " + parseFloat(json_data['image_list'][0]["sqm"]).toFixed(1);
173+
var jsqm_text = "jSQM " + parseFloat(json_data['image_list'][0]["jsqm"]).toFixed(1);
174174
context.strokeStyle = 'black';
175-
context.strokeText(sqm_text, x_right, y_bottom + 40, maxWidth);
175+
context.strokeText(jsqm_text, x_right, y_bottom + 40, maxWidth);
176176
context.fillStyle = 'lightgrey';
177-
context.fillText(sqm_text, x_right, y_bottom + 40, maxWidth);
177+
context.fillText(jsqm_text, x_right, y_bottom + 40, maxWidth);
178178

179179

180180

181181
context.font = '20px serif';
182182

183-
var sqm_max_text = "Max " + parseFloat(json_data['sqm_data']['max']).toFixed(1);
183+
var jsqm_max_text = "Max " + parseFloat(json_data['jsqm_data']['max']).toFixed(1);
184184
context.strokeStyle = 'black';
185-
context.strokeText(sqm_max_text, x_right, y_bottom + 80, maxWidth);
185+
context.strokeText(jsqm_max_text, x_right, y_bottom + 80, maxWidth);
186186
context.fillStyle = 'lightgrey';
187-
context.fillText(sqm_max_text, x_right, y_bottom + 80, maxWidth);
187+
context.fillText(jsqm_max_text, x_right, y_bottom + 80, maxWidth);
188188

189-
var sqm_avg_text = "Avg " + parseFloat(json_data['sqm_data']['avg']).toFixed(1);
189+
var jsqm_avg_text = "Avg " + parseFloat(json_data['jsqm_data']['avg']).toFixed(1);
190190
context.strokeStyle = 'black';
191-
context.strokeText(sqm_avg_text, x_right, y_bottom + 120, maxWidth);
191+
context.strokeText(jsqm_avg_text, x_right, y_bottom + 120, maxWidth);
192192
context.fillStyle = 'lightgrey';
193-
context.fillText(sqm_avg_text, x_right, y_bottom + 120, maxWidth);
193+
context.fillText(jsqm_avg_text, x_right, y_bottom + 120, maxWidth);
194194

195-
var sqm_min_text = "Min " + parseFloat(json_data['sqm_data']['min']).toFixed(1);
195+
var jsqm_min_text = "Min " + parseFloat(json_data['jsqm_data']['min']).toFixed(1);
196196
context.strokeStyle = 'black';
197-
context.strokeText(sqm_min_text, x_right, y_bottom + 160, maxWidth);
197+
context.strokeText(jsqm_min_text, x_right, y_bottom + 160, maxWidth);
198198
context.fillStyle = 'lightgrey';
199-
context.fillText(sqm_min_text, x_right, y_bottom + 160, maxWidth);
199+
context.fillText(jsqm_min_text, x_right, y_bottom + 160, maxWidth);
200200
};
201201

202202

indi_allsky/flask/views.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -988,7 +988,7 @@ def get_context(self):
988988
func.count(IndiAllSkyDbImageTable.id).label('i_count'),
989989
func.avg(IndiAllSkyDbImageTable.exposure).label('exposure_avg'),
990990
func.avg(IndiAllSkyDbImageTable.adu).label('adu_avg'),
991-
func.avg(IndiAllSkyDbImageTable.sqm).label('sqm_avg'),
991+
func.avg(IndiAllSkyDbImageTable.sqm).label('jsqm_avg'),
992992
func.avg(IndiAllSkyDbImageTable.stars).label('stars_avg'),
993993
)\
994994
.join(IndiAllSkyDbImageTable.camera)\
@@ -1020,7 +1020,7 @@ def get_context(self):
10201020
func.count(IndiAllSkyDbImageTable.id).label('i_count'),
10211021
func.avg(IndiAllSkyDbImageTable.exposure).label('exposure_avg'),
10221022
func.avg(IndiAllSkyDbImageTable.adu).label('adu_avg'),
1023-
func.avg(IndiAllSkyDbImageTable.sqm).label('sqm_avg'),
1023+
func.avg(IndiAllSkyDbImageTable.sqm).label('jsqm_avg'),
10241024
func.avg(IndiAllSkyDbImageTable.stars).label('stars_avg'),
10251025
)\
10261026
.join(IndiAllSkyDbImageTable.camera)\
@@ -1111,7 +1111,7 @@ def get_objects(self):
11111111
data = {
11121112
'message' : '',
11131113
'image_list' : self.getLoopImages(camera_id, ts_dt, history_seconds),
1114-
'sqm_data' : jsqm_data,
1114+
'jsqm_data' : jsqm_data,
11151115
'stars_data' : self.getStarsData(camera_id, ts_dt),
11161116
'camera_sqm_mag_data' : camera_sqm_mag_data,
11171117
'camera_sqm_adu_data' : camera_sqm_adu_data,
@@ -1179,12 +1179,12 @@ def getLoopImages(self, camera_id, loop_dt, history_seconds):
11791179

11801180

11811181
try:
1182-
data['sqm'] = i.sqm
1182+
data['jsqm'] = i.sqm
11831183
data['stars'] = i.stars
11841184
data['detections'] = i.detections
11851185
except AttributeError:
11861186
# view is reused for panoramas
1187-
data['sqm'] = 0
1187+
data['jsqm'] = 0
11881188
data['stars'] = 0
11891189
data['detections'] = 0
11901190

@@ -1504,7 +1504,7 @@ def get_objects(self):
15041504
}
15051505

15061506

1507-
if len(data['chart_data']['sqm']) == 0:
1507+
if len(data['chart_data']['jsqm']) == 0:
15081508
data['message'] = 'No chart data in history range'
15091509

15101510

@@ -1519,12 +1519,12 @@ def getChartData(self, camera_id, ts_dt, history_seconds):
15191519
chart_query = IndiAllSkyDbImageTable.query\
15201520
.add_columns(
15211521
IndiAllSkyDbImageTable.createDate,
1522-
IndiAllSkyDbImageTable.sqm,
1522+
IndiAllSkyDbImageTable.sqm.label('jsqm'),
15231523
func.avg(IndiAllSkyDbImageTable.stars).over(order_by=IndiAllSkyDbImageTable.createDate, rows=(-5, 0)).label('stars_rolling'),
15241524
IndiAllSkyDbImageTable.temp,
15251525
IndiAllSkyDbImageTable.exposure,
15261526
IndiAllSkyDbImageTable.detections,
1527-
(IndiAllSkyDbImageTable.sqm - func.lag(IndiAllSkyDbImageTable.sqm).over(order_by=IndiAllSkyDbImageTable.createDate)).label('sqm_diff'),
1527+
(IndiAllSkyDbImageTable.sqm - func.lag(IndiAllSkyDbImageTable.sqm).over(order_by=IndiAllSkyDbImageTable.createDate)).label('jsqm_diff'),
15281528
IndiAllSkyDbImageTable.data,
15291529
)\
15301530
.join(IndiAllSkyDbCameraTable)\
@@ -1541,8 +1541,8 @@ def getChartData(self, camera_id, ts_dt, history_seconds):
15411541
#app.logger.info('Chart SQL: %s', str(chart_query))
15421542

15431543
chart_data = {
1544-
'sqm' : [],
1545-
'sqm_d' : [],
1544+
'jsqm' : [],
1545+
'jsqm_d' : [],
15461546
'stars' : [],
15471547
'temp' : [],
15481548
'exp' : [],
@@ -1585,11 +1585,11 @@ def getChartData(self, camera_id, ts_dt, history_seconds):
15851585
for i in chart_query:
15861586
x = i.createDate.strftime('%H:%M:%S')
15871587

1588-
sqm_data = {
1588+
jsqm_data = {
15891589
'x' : x,
1590-
'y' : i.sqm,
1590+
'y' : i.jsqm,
15911591
}
1592-
chart_data['sqm'].append(sqm_data)
1592+
chart_data['jsqm'].append(jsqm_data)
15931593

15941594
star_data = {
15951595
'x' : x,
@@ -1617,11 +1617,11 @@ def getChartData(self, camera_id, ts_dt, history_seconds):
16171617
}
16181618
chart_data['exp'].append(exp_data)
16191619

1620-
sqm_d_data = {
1620+
jsqm_d_data = {
16211621
'x' : x,
1622-
'y' : i.sqm_diff,
1622+
'y' : i.jsqm_diff,
16231623
}
1624-
chart_data['sqm_d'].append(sqm_d_data)
1624+
chart_data['jsqm_d'].append(jsqm_d_data)
16251625

16261626

16271627
if i.detections > 0:

indi_allsky/processing.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,12 +190,16 @@ def __init__(
190190
self._orb.sun_color_rgb = self.config['ORB_PROPERTIES']['SUN_COLOR']
191191
self._orb.moon_color_rgb = self.config['ORB_PROPERTIES']['MOON_COLOR']
192192

193+
194+
# Realtime keogram
193195
self._keogram_gen = KeogramGenerator(
194196
self.config,
195197
)
196198
self._keogram_gen.angle = self.config.get('KEOGRAM_ANGLE', 0.0)
197199
self._keogram_gen.h_scale_factor = self.config.get('KEOGRAM_H_SCALE', 100)
198200
self._keogram_gen.v_scale_factor = self.config.get('KEOGRAM_V_SCALE', 33)
201+
# realtime keogram cropping does not currently work because this function is performed in
202+
# finalize() which is not utilized for the realtime keogram
199203
self._keogram_gen.crop_top = self.config.get('KEOGRAM_CROP_TOP', 0)
200204
self._keogram_gen.crop_bottom = self.config.get('KEOGRAM_CROP_BOTTOM', 0)
201205
self._keogram_gen.x_offset = 0 # reset

0 commit comments

Comments
 (0)