Skip to content

Commit 744ed7b

Browse files
authoredFeb 10, 2025··
Merge pull request #141 from sot/ruff
Ruff
2 parents ea3f00e + 87ad521 commit 744ed7b

25 files changed

+370
-284
lines changed
 
+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
name: check format using ruff
2+
on: [push]
3+
jobs:
4+
ruff:
5+
runs-on: ubuntu-latest
6+
steps:
7+
- uses: actions/checkout@v4
8+
- uses: chartboost/ruff-action@v1
9+
with:
10+
args: format --check

‎.github/workflows/python-linting.yml

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
name: lint code using ruff
2+
on: [push]
3+
jobs:
4+
ruff:
5+
runs-on: ubuntu-latest
6+
steps:
7+
- uses: actions/checkout@v4
8+
- uses: chartboost/ruff-action@v1

‎.pre-commit-config.yaml

+8-12
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
repos:
2-
- repo: https://github.com/psf/black
3-
rev: 24.10.0
4-
hooks:
5-
- id: black
6-
language_version: python3.11
7-
8-
- repo: https://github.com/pycqa/isort
9-
rev: 5.13.2
10-
hooks:
11-
- id: isort
12-
name: isort (python)
13-
language_version: python3.11
2+
- repo: https://github.com/astral-sh/ruff-pre-commit
3+
# Ruff version.
4+
rev: v0.9.0
5+
hooks:
6+
# Run the linter.
7+
- id: ruff
8+
# Run the formatter.
9+
- id: ruff-format

‎alt_core/core_python.py

+9-7
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
# Licensed under a 3-clause BSD style license - see LICENSE.rst
22
import numpy as np
33

4+
45
def calc_model(indexes, dt, n_preds, mvals, parvals, mults, heats, heatsinks):
56
deriv = np.zeros(n_preds)
7+
68
def dT_dt(j, y):
79
deriv[:] = 0.0
810

911
# Couplings with other nodes
10-
for i in xrange(len(mults)):
11-
i1 = mults[i, 0]
12+
for i in range(len(mults)):
13+
i1 = mults[i, 0]
1214
i2 = mults[i, 1]
1315
tau = parvals[mults[i, 2]]
1416
if i2 < n_preds and i1 < n_preds:
@@ -17,14 +19,14 @@ def dT_dt(j, y):
1719
deriv[i1] += (mvals[i2, j] - y[i1]) / tau
1820

1921
# Direct heat inputs (e.g. Solar, Earth)
20-
for i in xrange(len(heats)):
22+
for i in range(len(heats)):
2123
i1 = heats[i, 0]
2224
if i1 < n_preds:
2325
i2 = heats[i, 1]
2426
deriv[i1] += mvals[i2, j]
2527

2628
# Couplings to heat sinks
27-
for i in xrange(len(heatsinks)):
29+
for i in range(len(heatsinks)):
2830
i1 = heatsinks[i, 0]
2931
if i1 < n_preds:
3032
T = parvals[heatsinks[i, 1]]
@@ -37,6 +39,6 @@ def dT_dt(j, y):
3739
# 2nd order Runge-Kutta (do 4th order later as needed)
3840
y = mvals[:n_preds, j]
3941
k1 = dt * dT_dt(j, y)
40-
k2 = dt * dT_dt(j+1, y + k1 / 2.0)
41-
mvals[:n_preds, j+1] = y + k2 / 2.0
42-
mvals[:n_preds, j+2] = y + k2
42+
k2 = dt * dT_dt(j + 1, y + k1 / 2.0)
43+
mvals[:n_preds, j + 1] = y + k2 / 2.0
44+
mvals[:n_preds, j + 2] = y + k2

‎models/acisfp/calc_model.py

+26-26
Original file line numberDiff line numberDiff line change
@@ -7,56 +7,56 @@
77
values.
88
"""
99

10-
import xija
1110
from cheta import fetch_eng
1211
from ska_matplotlib import plot_cxctime
1312

14-
start = '2012:001'
15-
stop = '2012:005'
13+
import xija
14+
15+
start = "2012:001"
16+
stop = "2012:005"
1617

17-
model = xija.XijaModel('acisfp', model_spec='acisfp_spec.json',
18-
start=start, stop=stop)
18+
model = xija.XijaModel("acisfp", model_spec="acisfp_spec.json", start=start, stop=stop)
1919

2020
## PREDICTED COMPONENTS
2121

2222
# Use MSID FPTEMP_11 (ACIS FP temperature DEGC) to initialize if available
23-
model.comp['fptemp'].set_data(-120.0)
23+
model.comp["fptemp"].set_data(-120.0)
2424

2525
# These two should be initialized to the given constant values. No direct
2626
# analog is available in telemetry. Ideally one should propagate the model for
2727
# at least 24 hours from these starting points to remove startup transients.
28-
model.comp['1cbat'].set_data(-55.0)
29-
model.comp['sim_px'].set_data(-110.0)
28+
model.comp["1cbat"].set_data(-55.0)
29+
model.comp["sim_px"].set_data(-110.0)
3030

3131
## INPUT DATA COMPONENTS
3232

3333
# Ephemeris values: position (meters) of Chandra relative to Earth center in
3434
# ECI coordinate frame.
35-
model.comp['orbitephem0_x'].set_data(25000e3) # 25000 km
36-
model.comp['orbitephem0_y'].set_data(25000e3) # 25000 km
37-
model.comp['orbitephem0_z'].set_data(25000e3) # 25000 km
35+
model.comp["orbitephem0_x"].set_data(25000e3) # 25000 km
36+
model.comp["orbitephem0_y"].set_data(25000e3) # 25000 km
37+
model.comp["orbitephem0_z"].set_data(25000e3) # 25000 km
3838

3939
# Normalized attitude quaternions
40-
model.comp['aoattqt1'].set_data(0.0)
41-
model.comp['aoattqt2'].set_data(0.0)
42-
model.comp['aoattqt3'].set_data(0.0)
43-
model.comp['aoattqt4'].set_data(1.0)
40+
model.comp["aoattqt1"].set_data(0.0)
41+
model.comp["aoattqt2"].set_data(0.0)
42+
model.comp["aoattqt3"].set_data(0.0)
43+
model.comp["aoattqt4"].set_data(1.0)
4444

4545
# All the usual values here
46-
model.comp['pitch'].set_data(130)
47-
model.comp['eclipse'].set_data(False)
48-
model.comp['sim_z'].set_data(75000)
49-
model.comp['ccd_count'].set_data(6)
50-
model.comp['fep_count'].set_data(6)
51-
model.comp['vid_board'].set_data(1)
52-
model.comp['clocking'].set_data(1)
53-
model.comp['dpa_power'].set_data(0.0)
46+
model.comp["pitch"].set_data(130)
47+
model.comp["eclipse"].set_data(False)
48+
model.comp["sim_z"].set_data(75000)
49+
model.comp["ccd_count"].set_data(6)
50+
model.comp["fep_count"].set_data(6)
51+
model.comp["vid_board"].set_data(1)
52+
model.comp["clocking"].set_data(1)
53+
model.comp["dpa_power"].set_data(0.0)
5454

5555
model.make()
5656
model.calc()
5757

5858
# Note the telemetry MSID is fptemp_11 but the Node name is fptemp
59-
fptemp_11 = fetch_eng.Msid('fptemp_11', start, stop) # DEGC
59+
fptemp_11 = fetch_eng.Msid("fptemp_11", start, stop) # DEGC
6060

61-
plot_cxctime(model.times, model.comp['fptemp'].mvals, 'r-')
62-
plot_cxctime(fptemp_11.times, fptemp_11.vals, 'b-')
61+
plot_cxctime(model.times, model.comp["fptemp"].mvals, "r-")
62+
plot_cxctime(fptemp_11.times, fptemp_11.vals, "b-")

‎models/minusz/make_minusz.py

+13-13
Original file line numberDiff line numberDiff line change
@@ -5,38 +5,38 @@
55
env PYTHONPATH=$PWD python minusz/minusz.py
66
"""
77

8-
import xija
98
import json
109

10+
import xija
11+
1112
P_pitches = [45, 60, 90, 120, 145, 170]
1213
P_pitches2 = [45, 60, 90, 120, 145, 171]
13-
minusz = json.load(open('/proj/sot/ska/share/nmass/minusz/pars_minusz.json'))
14-
sigmas = {'tephin': -10}
14+
minusz = json.load(open("/proj/sot/ska/share/nmass/minusz/pars_minusz.json"))
15+
sigmas = {"tephin": -10}
1516

16-
mdl = xija.ThermalModel(name='minusz', start='2010:001', stop='2010:002')
17+
mdl = xija.ThermalModel(name="minusz", start="2010:001", stop="2010:002")
1718
nodes = {}
1819
pitch = mdl.add(xija.Pitch)
1920
eclipse = mdl.add(xija.Eclipse)
2021

2122
for msid in minusz:
2223
pars = minusz[msid]
23-
Ps = [pars['pf_{0:03d}'.format(p)] for p in P_pitches]
24+
Ps = [pars["pf_{0:03d}".format(p)] for p in P_pitches]
2425
nodes[msid] = mdl.add(xija.Node, msid, sigma=sigmas.get(msid, -20))
25-
mdl.add(xija.SolarHeat, msid, pitch, eclipse, P_pitches2, Ps,
26-
ampl=pars['p_ampl'])
27-
mdl.add(xija.HeatSink, msid, T=pars['T_e'], tau=pars['tau_ext'])
26+
mdl.add(xija.SolarHeat, msid, pitch, eclipse, P_pitches2, Ps, ampl=pars["p_ampl"])
27+
mdl.add(xija.HeatSink, msid, T=pars["T_e"], tau=pars["tau_ext"])
2828

2929
for msid in minusz:
3030
pars = minusz[msid]
31-
coupled_nodes = [x for x in pars if x.startswith('tau_t')]
31+
coupled_nodes = [x for x in pars if x.startswith("tau_t")]
3232
for parname in coupled_nodes:
3333
mdl.add(xija.Coupling, msid, node2=parname[4:], tau=pars[parname])
3434

35-
#mdl.make_pars()
36-
#mdl.make_mvals()
37-
#mdl.make_tmal()
35+
# mdl.make_pars()
36+
# mdl.make_mvals()
37+
# mdl.make_tmal()
3838
mdl.make()
39-
mdl.write('minusz/minusz2.json')
39+
mdl.write("minusz/minusz2.json")
4040

4141
# 128 ms for 180 days prediction (250 ms/year)
4242
# Matches results from fit_nmass qualitatively well (visually compared

‎models/psmc/make_psmc_from_twodof.py

+56-52
Original file line numberDiff line numberDiff line change
@@ -1,82 +1,86 @@
11
# Licensed under a 3-clause BSD style license - see LICENSE.rst
2-
import xija
3-
import numpy as np
42
import asciitable
5-
from Chandra.Time import DateTime
3+
import numpy as np
64
from Ska.Matplotlib import plot_cxctime
75

8-
pars = dict(acis150 = 28.029,
9-
acis50 = 54.192,
10-
acis90 = 26.975,
11-
c1 = 114.609,
12-
c2 = 11.362,
13-
hrci150 = 32.977,
14-
hrci50 = 38.543,
15-
hrci90 = 28.053,
16-
hrcs150 = 37.265,
17-
hrcs50 = 30.715,
18-
hrcs90 = 30.013,
19-
u01 = 6.036,
20-
u01quad = -0.599,
21-
u12 = 8.451,
22-
)
6+
import xija
7+
8+
pars = dict(
9+
acis150=28.029,
10+
acis50=54.192,
11+
acis90=26.975,
12+
c1=114.609,
13+
c2=11.362,
14+
hrci150=32.977,
15+
hrci50=38.543,
16+
hrci90=28.053,
17+
hrcs150=37.265,
18+
hrcs50=30.715,
19+
hrcs90=30.013,
20+
u01=6.036,
21+
u01quad=-0.599,
22+
u12=8.451,
23+
)
2324

24-
u01 = pars['u01']
25-
u12 = pars['u12']
26-
c1 = pars['c1']
27-
c2 = pars['c2']
25+
u01 = pars["u01"]
26+
u12 = pars["u12"]
27+
c1 = pars["c1"]
28+
c2 = pars["c2"]
2829

2930
P_pitches = [50, 90, 150]
3031
P_vals = []
31-
for instr in ('hrcs', 'hrci', 'acis'):
32+
for instr in ("hrcs", "hrci", "acis"):
3233
for pitch in P_pitches:
33-
P_vals.append(pars['{0}{1}'.format(instr, pitch)])
34-
P_vals = np.array(P_vals).reshape(3,3) * u01 / c1
34+
P_vals.append(pars["{0}{1}".format(instr, pitch)])
35+
P_vals = np.array(P_vals).reshape(3, 3) * u01 / c1
3536
P_vals = P_vals.tolist()
3637

3738
tau_e = c1 / u01
38-
T_e = -128.0 * (1. / u01 + 1. / u12)
39-
k = 1. / c2
40-
tau12 = c1 / u12
41-
tau21 = c2 / u12
39+
T_e = -128.0 * (1.0 / u01 + 1.0 / u12)
40+
k = 1.0 / c2
41+
tau12 = c1 / u12
42+
tau21 = c2 / u12
4243

43-
mdl = xija.ThermalModel('psmc', start='2011:103:00:00:00.00', stop='2011:124:00:00:00')
44+
mdl = xija.ThermalModel("psmc", start="2011:103:00:00:00.00", stop="2011:124:00:00:00")
4445

45-
pin1at = mdl.add(xija.Node, '1pin1at')
46-
pdeaat = mdl.add(xija.Node, '1pdeaat')
46+
pin1at = mdl.add(xija.Node, "1pin1at")
47+
pdeaat = mdl.add(xija.Node, "1pdeaat")
4748
pitch = mdl.add(xija.Pitch)
4849
sim_z = mdl.add(xija.SimZ)
4950

5051
coup12 = mdl.add(xija.Coupling, pin1at, pdeaat, tau=tau12)
5152
coup21 = mdl.add(xija.Coupling, pdeaat, pin1at, tau=tau21)
52-
sol = mdl.add(xija.AcisPsmcSolarHeat, pin1at, pitch, sim_z, P_pitches=P_pitches, P_vals=P_vals)
53+
sol = mdl.add(
54+
xija.AcisPsmcSolarHeat, pin1at, pitch, sim_z, P_pitches=P_pitches, P_vals=P_vals
55+
)
5356
heat = mdl.add(xija.HeatSink, pin1at, T=T_e, tau=tau_e)
5457
# pow = mdl.add(xija.AcisPsmcPower, pdeaat, k=k)
55-
fep_count = mdl.add(xija.CmdStatesData,
56-
u'fep_count')
57-
ccd_count = mdl.add(xija.CmdStatesData,
58-
u'ccd_count')
59-
vid_board = mdl.add(xija.CmdStatesData,
60-
u'vid_board')
61-
clocking = mdl.add(xija.CmdStatesData,
62-
u'clocking')
63-
pow = mdl.add(xija.AcisDpaStatePower, pdeaat, fep_count=fep_count,
64-
ccd_count=ccd_count, vid_board=vid_board, clocking=clocking)
58+
fep_count = mdl.add(xija.CmdStatesData, "fep_count")
59+
ccd_count = mdl.add(xija.CmdStatesData, "ccd_count")
60+
vid_board = mdl.add(xija.CmdStatesData, "vid_board")
61+
clocking = mdl.add(xija.CmdStatesData, "clocking")
62+
pow = mdl.add(
63+
xija.AcisDpaStatePower,
64+
pdeaat,
65+
fep_count=fep_count,
66+
ccd_count=ccd_count,
67+
vid_board=vid_board,
68+
clocking=clocking,
69+
)
6570

6671
mdl.make()
6772
mdl.calc()
68-
mdl.write('psmc_classic.json')
73+
mdl.write("psmc_classic.json")
6974

70-
psmc = asciitable.read('models_dev/psmc/out_2010103_2010124/temperatures.dat')
75+
psmc = asciitable.read("models_dev/psmc/out_2010103_2010124/temperatures.dat")
7176

7277
figure(1)
7378
clf()
74-
plot_cxctime(pdeaat.times, pdeaat.mvals, 'b')
75-
plot_cxctime(pdeaat.times, pdeaat.dvals, 'r')
76-
plot_cxctime(psmc['time'], psmc['1pdeaat'], 'g')
79+
plot_cxctime(pdeaat.times, pdeaat.mvals, "b")
80+
plot_cxctime(pdeaat.times, pdeaat.dvals, "r")
81+
plot_cxctime(psmc["time"], psmc["1pdeaat"], "g")
7782

7883
figure(2)
79-
plot_cxctime(pin1at.times, pin1at.mvals, 'b')
80-
plot_cxctime(pin1at.times, pin1at.dvals, 'r')
81-
plot_cxctime(psmc['time'], psmc['1pin1at'], 'g')
82-
84+
plot_cxctime(pin1at.times, pin1at.mvals, "b")
85+
plot_cxctime(pin1at.times, pin1at.dvals, "r")
86+
plot_cxctime(psmc["time"], psmc["1pin1at"], "g")

‎pyproject.toml

-19
This file was deleted.

0 commit comments

Comments
 (0)
Please sign in to comment.