Skip to content

Commit bb33ab8

Browse files
authored
Merge pull request #192 from kelle/spec-update2
Fix JWST spectra plotting
2 parents 74d917e + b6ed6df commit bb33ab8

3 files changed

Lines changed: 60 additions & 33 deletions

File tree

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ numpy==1.26.4
1010
pandas==2.0.3
1111
pytest==8.3.4
1212
requests==2.32.4
13-
specutils==2.0.0
13+
specutils==2.2.0
1414
SQLAlchemy==2.0.38
1515
tqdm==4.67.1
1616
Werkzeug==3.1.4

simple_app/plots.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ def normalise() -> np.ndarray:
152152
db = SimpleDB(db_file) # open database
153153
t_spectra: Table = db.query(db.Spectra).\
154154
filter(db.Spectra.c.source == query).\
155-
table(spectra=['access_url'])
155+
table() # do not use spectra=['access_url'] here, it will try to read the spectra as Spectrum objects
156156

157157
# initialise plot
158158
n_fail, fail_string_list = 0, []
@@ -173,7 +173,12 @@ def normalise() -> np.ndarray:
173173

174174
# checking each spectra in table
175175
for spec in t_spectra:
176-
spectrum: Spectrum1D = spec['access_url']
176+
try:
177+
# Manually convert the spectrum to a Spectrum object
178+
spectrum = Spectrum.read(spec['access_url'], cache=True)
179+
except Exception as e:
180+
print(f"Unable to read {spec['access_url']} as Spectrum. Error: {e}")
181+
continue
177182

178183
# checking spectrum has good units and not only NaNs or 0s
179184
try:

simple_app/simports.py

Lines changed: 52 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,69 @@
11
"""
22
Importing all packages
33
"""
4-
# external packages
4+
5+
import argparse # parsing the arguments given with file
6+
import os # operating system
7+
import sys # system arguments
8+
from copy import deepcopy # memory control
9+
from difflib import get_close_matches # for redirecting bad file paths
10+
from io import BufferedIOBase, BytesIO, StringIO # writing files without saving to disk
11+
from shutil import copy # copying files
12+
from sqlite3 import Warning as SqliteWarning # errors from sqlite
13+
from time import localtime, strftime # time stuff for naming files
14+
from typing import Dict, Generator, List, Optional, Tuple, Union # type hinting (good in IDEs)
15+
from urllib.parse import quote # handling strings into url friendly form
16+
from zipfile import ZipFile # zipping files together
17+
18+
import astropy.units as u # units
19+
import multiprocess as mp # multiprocessing for efficiency
20+
import numpy as np # numerical python
21+
import pandas as pd # running dataframes
22+
import pytest # testing
23+
import requests # accessing internet
524
from astrodbkit.astrodb import Database # used for pulling out database and querying
625
from astropy.coordinates import SkyCoord # coordinates
726
from astropy.io import fits # handling fits files
8-
import astropy.units as u # units
927
from astropy.table import Table # tables in astropy
1028
from bokeh.embed import components # converting python bokeh to javascript
11-
from bokeh.layouts import row, column # bokeh displaying nicely
12-
from bokeh.models import ColumnDataSource, Range1d, CustomJS, \
13-
Select, Toggle, TapTool, OpenURL, HoverTool, Span, RangeSlider, Label, ColorBar, FixedTicker # bokeh models
29+
from bokeh.layouts import column, row # bokeh displaying nicely
30+
from bokeh.models import (
31+
ColorBar,
32+
ColumnDataSource,
33+
CustomJS,
34+
FixedTicker,
35+
HoverTool,
36+
Label,
37+
OpenURL,
38+
Range1d,
39+
RangeSlider,
40+
Select, # bokeh models
41+
Span,
42+
TapTool,
43+
Toggle,
44+
)
1445
from bokeh.palettes import Colorblind8, Turbo256 # plotting palettes
15-
from bokeh.plotting import figure, curdoc # bokeh plotting
46+
from bokeh.plotting import curdoc, figure # bokeh plotting
1647
from bokeh.resources import CDN # resources for webpage
17-
from bokeh.themes import built_in_themes, Theme # appearance of bokeh glyphs
48+
from bokeh.themes import Theme, built_in_themes # appearance of bokeh glyphs
1849
from bokeh.transform import linear_cmap # making colour maps
19-
from flask import (Flask, render_template, jsonify, send_from_directory, redirect, url_for,
20-
Response, abort, request, session) # website
50+
from flask import (
51+
Flask,
52+
Response, # website
53+
abort,
54+
jsonify,
55+
redirect,
56+
render_template,
57+
request,
58+
send_from_directory,
59+
session,
60+
url_for,
61+
)
2162
from flask_cors import CORS # cross origin fix (aladin mostly)
2263
from flask_wtf import FlaskForm # web forms
2364
from markdown2 import markdown # using markdown formatting
24-
import numpy as np # numerical python
25-
import pandas as pd # running dataframes
26-
import pytest # testing
27-
from specutils import Spectrum1D # spectrum objects
28-
from sqlalchemy.exc import ResourceClosedError, OperationalError, ProgrammingError # errors from sqlalchemy
29-
from sqlite3 import Warning as SqliteWarning # errors from sqlite
65+
from specutils import Spectrum
66+
from sqlalchemy.exc import OperationalError, ProgrammingError, ResourceClosedError # errors from sqlalchemy
3067
from tqdm import tqdm # progress bars
3168
from werkzeug.exceptions import HTTPException # underlying http
3269
from wtforms import StringField, SubmitField, TextAreaField, ValidationError # web forms
33-
34-
# internal packages
35-
import argparse # parsing the arguments given with file
36-
from copy import deepcopy # memory control
37-
from difflib import get_close_matches # for redirecting bad file paths
38-
from io import StringIO, BytesIO, BufferedIOBase # writing files without saving to disk
39-
import multiprocess as mp # multiprocessing for efficiency
40-
import os # operating system
41-
import requests # accessing internet
42-
from shutil import copy # copying files
43-
import sys # system arguments
44-
from time import strftime, localtime # time stuff for naming files
45-
from typing import Tuple, Optional, List, Union, Dict, Generator # type hinting (good in IDEs)
46-
from urllib.parse import quote # handling strings into url friendly form
47-
from zipfile import ZipFile # zipping files together

0 commit comments

Comments
 (0)